#include <bits/stdc++.h>
using namespace std;

#define fast ios::sync_with_stdio(false); cin.tie(nullptr);
#define ll long long
#define endl '\n'
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()

const int oo = 1e9;
const ll INF = 1e18;

void solve(){
    int n; cin >> n;
    vector<int>arr(n);
    for(int i=0 ; i<n ; i++) cin >> arr[i];
    vector<int> s = arr;
    sort(all(s));
    map<ll , ll>a , b , c;
    map<ll , ll>m_a , m_b , m_c ;
    int ord = 0;
    for(int i=0 ; i<n ; i++){
        if(ord==0){
            a[s[i]]++;
            m_a[s[i]]++;
            ord = 1;
        }
        else if(ord==1){
            b[s[i]]++;
            m_b[s[i]]++;
            ord = 2 ;
        }
        else{
            c[s[i]]++;
            m_c[s[i]]++;
            ord = 0;
        }
    }
    ll mex_a;
    for(int i=0 ; i<n ; i++){
        if(!m_a[i]){
            mex_a = i;
            break;
        }
    }
    ll mex_b;
    for(int i=0 ; i<n ; i++){
        if(!m_b[i]){
            mex_b = i;
            break;
        }
    }
    ll mex_c;
    for(int i=0 ; i<n ; i++){
        if(!m_c[i]){
            mex_c = i;
            break;
        }
    }
     
    if((mex_a+mex_b+mex_c) < 2*max({mex_a , mex_b , mex_c})){
        cout<<"NO\n";
        return;
    }
    else {
        cout<<"YES\n";
        for(auto &i : arr){
            if(a[i]){
                cout<<"A";
                a[i]=0;
            }
            else if(b[i]){
                cout<<"B";
                b[i]=0;
            }
            else{
                cout<<"C";
                c[i]=0;
            }
        }
    }
    cout<<"\n";
}

int main()
{
    fast

    int t = 1;
    cin >> t;

    while (t--)
        solve();

    return 0;
}