Problem: Vasya has a multiset s consisting of n integer numbers. Vasya calls some number x nice if it appears in the multiset exactly once. For example, multiset \{1, 1, 2, 3, 3, 3, 4\} contains nice numbers 2 and 4.

Vasya wants to split multiset s into two multisets a and b (one of which may be empty) in such a way that the quantity of nice numbers in multiset a would be the same as the quantity of nice numbers in multiset b (the quantity of numbers to appear exactly once in multiset a and the quantity of numbers to appear exactly once in multiset b).

Input

The first line contains a single integer n~(2 ≤ n ≤ 100).

The second line contains n integers s_1, s_2, ... s_n~(1 ≤ s_i ≤ 100) — the multiset s.

Output

If there exists no split of s to satisfy the given requirements, then print "NO" in the first line.

Otherwise print "YES" in the first line.

The second line should contain a string, consisting of n characters. i-th character should be equal to 'A' if the i-th element of multiset s goes to multiset a and 'B' if if the i-th element of multiset s goes to multiset b. Elements are numbered from 1 to n in the order they are given in the input.

If there exist multiple solutions, then print any of them.

Examples

Input

4
3 5 7 1


Output

YES
BABA


Input

3
3 5 1


Output

NO

Solution (in JAVA):

Solution:
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
//int T=s.nextInt();
//while(T-->0){
int sum=0;
  int n=s.nextInt(); int[] count=new int[101];
  int[] a=new int [n];boolean[] vis=new boolean[101];
for(int i=0;i<n;i++){
 a[i]=s.nextInt();
count[a[i]]++;
}for(int i=0;i<n;i++){
                 if(vis[a[i]]==true) continue; vis[a[i]]=true;
 if(count[a[i]]==1) sum++;
}
char[] ans=new char[n];int target=-1;int c=0;
if(sum%2!=0) {int flag=0;
                 for(int i=0;i<n;i++){
                   if(count[a[i]]>2){
                       System.out.println("YES");                   
                                    target=a[i];
                     for(int j=i;j<n;j++){
                         if(target==a[j]){                     
                        if(flag==0) {ans[j]='A';flag=1;}
                        else {ans[j]='B';}}
                     }for(int i1=0;i1<n;i1++){
                 if(a[i1]==target){
                   System.out.print(ans[i1]);continue;
                 }
                 if(count[a[i1]]==1) c++;
                  if(c>sum/2) {if(count[a[i1]]>1)
                  System.out.print("A");
                  else System.out.print("B");}
                 else System.out.print("A");
                 }break;
                   }
                 }
                 if(target==-1)
                 System.out.println("NO");}
else{
                 System.out.println("YES");
                 
                 boolean[] vis1=new boolean[101];
                for(int i=0;i<n;i++){
                 if(count[a[i]]==1) c++;
                  if(c>sum/2) {if(count[a[i]]>1)
                              System.out.print("A");
                  else System.out.print("B");}
                 else System.out.print("A");
                 }
}
      
}
}