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.util.Scanner;

public class C {

	public static void main(String args[])
	{
		Scanner scan=new Scanner(System.in);
		int n=scan.nextInt();
		int freq[]=new int[1001];
		int ar[]=new int[n];
		for(int i=0;i<n;i++)
		{
			ar[i]=scan.nextInt();
			freq[ar[i]]++;
		}
		int ones=0;
		boolean done=false;
		int twos=0;
		int morethantwo=0;
		String ans="";
		int swap=0;
		for(int i=0;i<n;i++)
		{
		if(freq[ar[i]]==1)
		{
			ones++;
		
			}else if(freq[ar[i]]>2)
		{
			morethantwo++;
			
		}else{
			
		}
		
		}
		int frist=0;
		int second=0;
		char put[]=new char[101];
		
		for(int i=0;i<n;i++)
		{
			if(freq[ar[i]]==1){
				if(swap%2==0 ){
					
					ans+="A";}else{
						ans+="B";
						
					}
				swap++;
				continue;
				}
			if(put[ar[i]]=='A')
			{
				ans+="A";
				continue;
			}
				if(freq[ar[i]]>=2 && ones%2==0)
				{
					ans+='B';
					continue;
				}else if(freq[ar[i]]==2 && ones%2==1)
					{
						ans+="A";
				}else if(done && freq[ar[i]]>=3)
				{
					ans+="A";
				
				
					
				}else if(freq[ar[i]]>=3 && ones%2==1 && !done)
					{
					
						ans+="B";
						
						put[ar[i]]='A';
						done=true;
						//then fill all with IN AA
					
					
					//then insert one in smaller and then gooo
				}
		}
		morethantwo=0;
		for(int i=1;i<=100;i++)
		{
			if(freq[i]>2)
			{
				morethantwo++;
			}
		}
		//System.out.println(morethantwo+" "+ones);
		if(ones%2==0)
		{
			System.out.println("YES");
			System.out.println(ans);
		}
		else if(morethantwo>=1 && ones%2!=0)
		{
			System.out.println("YES");
			System.out.println(ans);
		}else{
			System.out.println("NO");
		}
	
		
		
	}
}