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 PYTHON3):

Solution:
def ip():
    return int(input())
    
def ipp():
    return map(int,input().split())
    
def sar():
    return list(ipp())
    
def pars(a):
    print(''.join(list(map(str, a))))
    print('\r')
    
def parl(a):
    print('\r'.join(list(map(str, a))))
    print('\r')
    
#template ends   
#from collections import ordereddict
if __name__=='__main__':
    T=1
    #T=int(input().strip())
    for _ in range(T):
        n = ip()
        d = {}
        cn = {}
        a = sar()
        for i in range(n):
            d[a[i]] = i
            if a[i] in cn:
                cn[a[i]] += 1
            else:
                cn[a[i]] = 1
        nice = 0
        for kk in cn:
            if cn[kk] == 1:
                nice+=1
        ans = ['-']*(n)
        na = 0
        nb = 0
        p=0
        for kk in cn:
            if p%2 == 0:
                if cn[kk] == 1:
                    ans[d[kk]] = 'A'
                    p+=1
                    na+=1
            else:
                if cn[kk] == 1:
                    ans[d[kk]] = 'B'
                    p+=1
                    nb+=1
            if cn[kk] == 2:
                #print('H')
                ans[d[kk]] = 'A'
                inn = a.index(kk)
                #print(inn)
                ans[inn] = 'B'
                na+=1
                nb+=1
        for kk in cn:
            if cn[kk] > 2:
                if na > nb:
                    ans[d[kk]] = 'B'
                    nb+=1
                    for i in range(0,d[kk]):
                        if a[i] == kk:
                            ans[i] = 'A'
                elif na < nb:
                    ans[d[kk]] = 'A'
                    na+=1
                    for i in range(0,d[kk]):
                        if a[i] == kk:
                            ans[i] = 'B'
        for i in range(n):
            if ans[i] == '-':
                ans[i]='A'
        if na == nb:
            print('YES')
            pars(ans)
        else:
            print('NO')