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.*;

public class CF3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		pair[] arr = new pair[n];
		for(int i=0;i<n;i++)
		{
			arr[i] = new pair();
			arr[i].first = s.nextInt();
			arr[i].second = i;
		}
		Arrays.sort(arr, new mycompare());
		char[] cls = new char[n];
		int a = 0, b = 0;
		int i = 0;
		int mi = -1;
		while(i<n)
		{
			int f = 0;
			int j = i;
			while(j<n && arr[i].first==arr[j].first)
			{
				j++;
				f++;
			}
			if(f==1)
			{
				if(a<=b)
				{
					a++;
					cls[i] = 'A';
				}
				else
				{
					b++;
					cls[i] = 'B';
				}
			}
			else if(f==2)
			{
				a++;
				b++;
				cls[i] = 'A';
				cls[i+1] = 'B';
			}
			else
			{
				mi = i;
				for(int k=i;k<j;k++)
					cls[k] = 'A';
			}
			i = j;
		}
		if(a>b && mi==-1)
			System.out.println("NO");
		else
		{
			if(a>b)
				cls[mi] = 'B';
			char[] ans = new char[n];
			for(i=0;i<n;i++)
				ans[arr[i].second] = cls[i];
			System.out.println("YES");
			for(i=0;i<n;i++)
				System.out.print(ans[i]);
			System.out.println();
		}
	}
	
	static class pair{
		int first;
		int second;
	}
	
	static class mycompare implements Comparator<pair>{
		public int compare(pair lhs, pair rhs)
		{
			return lhs.first-rhs.first;
		}
	}
}