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 <memory.h>
int main(void){
    int num,i,o,sum;
    char line[202];
    scanf("%d",&num);
    for(i=0;memset(line,0,sizeof(line)),i<num;i++){
        scanf("%s",line);
        if(line[0]=='>' && line[1]=='\''){
            sum=0;
            o=2;
            while(line[o] != '#' && line[o])o++,sum++;
            if(!line[o]){
                puts("NA");
                continue;
            }
            o++;
            while(line[o] != '~' && line[o])o++,sum--;
            if(!line[o]){
                puts("NA");
                continue;
            }
            if(sum == 0 && line[o+1]==0)
                puts("A");
            else
                puts("NA");
        }
        else if(line[0]=='>' && line[1]=='^'){
            o=2;
            while(line[o] != '~' && line[o]){
                if(line[o] == 'Q' && line[o+1] == '=')
                    o+=2;
            }
            if(!line[o]){
                puts("NA");
                continue;
            }
            if(line[o+1]=='~' && line[o+2]==0)
                puts("B");
            else
                puts("NA");
        }
        else
            puts("NA");
    }
    return 0;
}