#include <bits/stdc++.h>
using namespace std;
void solve() {
int n;
cin >> n;
vector<int> a(n);
map<int, int> count;
for (int i = 0; i < n; ++i) {
cin >> a[i];
count[a[i]]++;
}
// Tìm số nguyên không âm nhỏ nhất xuất hiện < 3 lần
int v = 0;
while (count[v] >= 3) {
v++;
}
// Theo dõi số lượng đã phân phối cho A, B, C
map<int, int> distributed;
string s(n, ' ');
for (int i = 0; i < n; ++i) {
int val = a[i];
if (val < v) {
// Phân phối lần lượt vào A, B, C
if (distributed[val] == 0) {
s[i] = 'A';
} else if (distributed[val] == 1) {
s[i] = 'B';
} else {
s[i] = 'C';
}
distributed[val]++;
} else {
// Các phần tử từ v trở lên cho vào A hết cho đơn giản
s[i] = 'A';
}
}
cout << "YES\n";
cout << s << "\n";
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHNvbHZlKCkgewogICAgaW50IG47CiAgICBjaW4gPj4gbjsKICAgIHZlY3RvcjxpbnQ+IGEobik7CiAgICBtYXA8aW50LCBpbnQ+IGNvdW50OwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICBjb3VudFthW2ldXSsrOwogICAgfQoKICAgIC8vIFTDrG0gc+G7kSBuZ3V5w6puIGtow7RuZyDDom0gbmjhu48gbmjhuqV0IHh14bqldCBoaeG7h24gPCAzIGzhuqduCiAgICBpbnQgdiA9IDA7CiAgICB3aGlsZSAoY291bnRbdl0gPj0gMykgewogICAgICAgIHYrKzsKICAgIH0KCiAgICAvLyBUaGVvIGTDtWkgc+G7kSBsxrDhu6NuZyDEkcOjIHBow6JuIHBo4buRaSBjaG8gQSwgQiwgQwogICAgbWFwPGludCwgaW50PiBkaXN0cmlidXRlZDsKICAgIHN0cmluZyBzKG4sICcgJyk7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBpbnQgdmFsID0gYVtpXTsKICAgICAgICBpZiAodmFsIDwgdikgewogICAgICAgICAgICAvLyBQaMOibiBwaOG7kWkgbOG6p24gbMaw4bujdCB2w6BvIEEsIEIsIEMKICAgICAgICAgICAgaWYgKGRpc3RyaWJ1dGVkW3ZhbF0gPT0gMCkgewogICAgICAgICAgICAgICAgc1tpXSA9ICdBJzsKICAgICAgICAgICAgfSBlbHNlIGlmIChkaXN0cmlidXRlZFt2YWxdID09IDEpIHsKICAgICAgICAgICAgICAgIHNbaV0gPSAnQic7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzW2ldID0gJ0MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRpc3RyaWJ1dGVkW3ZhbF0rKzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBDw6FjIHBo4bqnbiB04butIHThu6sgdiB0cuG7nyBsw6puIGNobyB2w6BvIEEgaOG6v3QgY2hvIMSRxqFuIGdp4bqjbgogICAgICAgICAgICBzW2ldID0gJ0EnOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8ICJZRVNcbiI7CiAgICBjb3V0IDw8IHMgPDwgIlxuIjsKfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==