Problem:
ヘビ

ある世界には，文字だけでできた不思議なヘビが住んでいます。このヘビには現在A種とB種の2種類が確認されていますが、それ以外の種類がいる可能性もあります。

A種は，">'"の後に"="が1個以上並んだ後、"#"が来て、さらに前と同じ個数の"="が来た後、"~"（半角チルダ）で終わります。

B種は，">^"の後に "Q="が1個以上並んだ後、"~~"で終わります。

A種の例： >'====#====~ >'==#==~

B種の例： >^Q=Q=Q=Q=~~ >^Q=Q=~~

ヘビを文字列データとして受け取り、それがどんな種類であるかを判別して、A種の場合は「A」、B種の場合は「B」、それ以外の種類の場合は「NA」を出力するプログラムを作成してください。

Input

入力は以下の形式で与えられます。

n
S1
S2
:
Sn

1 行目に判別されるヘビの数 n（1 ≤ n ≤ 10000）、続く n 行に i 匹目のヘビを表す文字列 Si (200文字以下の、空白を含まない文字列) がそれぞれ１行に与えられます。

Output

i 行目に i 匹目のヘビの種類 A、B または NA を出力してください。

Sample Input

3
>'======#======~
>^Q=Q=Q=Q=Q=Q=Q=Q=Q=~~
>'===#====~

Output for the Sample Input

A
B
NA

Solution in C (judge verdict: Time Limit Exceeded)

#include <stdio.h>
#include <string.h>
 
int main(void) {
    int max,data;
    int num;
    int cut_i;
     
    char hebi[]="意味のない文章";
    scanf("%d",&max);
     
    for(data=0;data<max;data++) {
        scanf("%s",hebi);
     
        if(strlen(hebi)<2 || hebi[0]!='>') {
            puts("NA");
            continue;
        }
         
        if(hebi[1]=='\'') {
            num=0;
            cut_i=2;
         
            while(hebi[cut_i]=='=') {
                cut_i++;
                num++;
            }
             
            if(hebi[cut_i]!='#' || num<=0){
                puts("NA");
            }
            else {
                cut_i++;
                 
                while(hebi[cut_i]=='=') {
                    cut_i++;
                    num--;
                }
 
                if(num!=0){
                    puts("NA");
                }
                else if(hebi[cut_i]!='~' || hebi[cut_i+1]!=0){
                    puts("NA");
                }
                else {
                    puts("A");
                }
            }
        } 
         
        else if(hebi[1]=='^') {
            cut_i=2;
            while(hebi[cut_i]=='Q' && hebi[cut_i+1]=='='){
                cut_i+=2;
            }
 
            if(cut_i==2){
                puts("NA");
            }
 
            else if(hebi[cut_i]!='~' || hebi[cut_i+1]!='~' || hebi[cut_i+2]!=0){
                puts("NA");
            }
            else {
                puts("B");
            }
        } else {
            puts("NA");
        }
    }
    return 0;
}