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>

main(){
  char data[101];
  int a,b,i,n,c,j,len,temp;

  scanf("%d", &n);

  for(i=0;i<n;i++){
    a=b=0;
    scanf("%s", data);

    for(j=0;;j++){
      if(data[j]=='\0'){
	len=j;
	break;
      }
    }

    if(len>=6 && len%2==0){
      if(data[0]=='>' && data[1]=='\'' && data[2]=='='){
	c=0;
	for(j=2;j<len;j++){
	  if(data[j]!='=') break;
	  c++;
	}
	temp=j;
	if(temp!=len){
	  if((len-4)/2==c && data[temp]=='#'){
	    c=0;
	    for(j=temp+1;j<len;j++){
	      if(data[j]!='=') break;
	      c++;
	    }
	    if(j==(len-1)){
	      if((len-4)/2==c && data[j]=='~') a=1;
	    }
	  }
	}
      }


      if(data[0]=='>' && data[1]=='^' && data[2]=='Q' && data[3]=='='){
	c=0;
	for(j=2;j<len;j+=2){
	  if(data[j]=='Q' && data[j+1]=='=') c++;
	  else break;
	}
	if(j==(len-2)){
	  if(data[j]=='~' && data[j+1]=='~') b=1;
	}
      }
    }

    if(a==1 && b==0) printf("A\n");
    else if(a==0 && b==1) printf("B\n");
    else printf("NA\n");
  }
  return 0;
}