#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;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGZhc3QgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKG51bGxwdHIpOwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIGFsbCh2KSAodikuYmVnaW4oKSwgKHYpLmVuZCgpCiNkZWZpbmUgcmFsbCh2KSAodikucmJlZ2luKCksICh2KS5yZW5kKCkKCmNvbnN0IGludCBvbyA9IDFlOTsKY29uc3QgbGwgSU5GID0gMWUxODsKCnZvaWQgc29sdmUoKXsKICAgIGludCBuOyBjaW4gPj4gbjsKICAgIHZlY3RvcjxpbnQ+YXJyKG4pOwogICAgZm9yKGludCBpPTAgOyBpPG4gOyBpKyspIGNpbiA+PiBhcnJbaV07CiAgICB2ZWN0b3I8aW50PiBzID0gYXJyOwogICAgc29ydChhbGwocykpOwogICAgbWFwPGxsICwgbGw+YSAsIGIgLCBjOwogICAgbWFwPGxsICwgbGw+bV9hICwgbV9iICwgbV9jIDsKICAgIGludCBvcmQgPSAwOwogICAgZm9yKGludCBpPTAgOyBpPG4gOyBpKyspewogICAgICAgIGlmKG9yZD09MCl7CiAgICAgICAgICAgIGFbc1tpXV0rKzsKICAgICAgICAgICAgbV9hW3NbaV1dKys7CiAgICAgICAgICAgIG9yZCA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYob3JkPT0xKXsKICAgICAgICAgICAgYltzW2ldXSsrOwogICAgICAgICAgICBtX2Jbc1tpXV0rKzsKICAgICAgICAgICAgb3JkID0gMiA7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgIGNbc1tpXV0rKzsKICAgICAgICAgICAgbV9jW3NbaV1dKys7CiAgICAgICAgICAgIG9yZCA9IDA7CiAgICAgICAgfQogICAgfQogICAgbGwgbWV4X2E7CiAgICBmb3IoaW50IGk9MCA7IGk8biA7IGkrKyl7CiAgICAgICAgaWYoIW1fYVtpXSl7CiAgICAgICAgICAgIG1leF9hID0gaTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgbGwgbWV4X2I7CiAgICBmb3IoaW50IGk9MCA7IGk8biA7IGkrKyl7CiAgICAgICAgaWYoIW1fYltpXSl7CiAgICAgICAgICAgIG1leF9iID0gaTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgbGwgbWV4X2M7CiAgICBmb3IoaW50IGk9MCA7IGk8biA7IGkrKyl7CiAgICAgICAgaWYoIW1fY1tpXSl7CiAgICAgICAgICAgIG1leF9jID0gaTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgIAogICAgaWYoKG1leF9hK21leF9iK21leF9jKSA8IDIqbWF4KHttZXhfYSAsIG1leF9iICwgbWV4X2N9KSl7CiAgICAgICAgY291dDw8Ik5PXG4iOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGNvdXQ8PCJZRVNcbiI7CiAgICAgICAgZm9yKGF1dG8gJmkgOiBhcnIpewogICAgICAgICAgICBpZihhW2ldKXsKICAgICAgICAgICAgICAgIGNvdXQ8PCJBIjsKICAgICAgICAgICAgICAgIGFbaV09MDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKGJbaV0pewogICAgICAgICAgICAgICAgY291dDw8IkIiOwogICAgICAgICAgICAgICAgYltpXT0wOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICBjb3V0PDwiQyI7CiAgICAgICAgICAgICAgICBjW2ldPTA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBjb3V0PDwiXG4iOwp9CgppbnQgbWFpbigpCnsKICAgIGZhc3QKCiAgICBpbnQgdCA9IDE7CiAgICBjaW4gPj4gdDsKCiAgICB3aGlsZSAodC0tKQogICAgICAgIHNvbHZlKCk7CgogICAgcmV0dXJuIDA7Cn0=