func_code_string: #include <bits/stdc++.h>   using namespace std;   signed main(void) {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     long long int t;     cin >> t;     while (t--) {       long long int n, x, y;       cin >> n >> x >> y;       vector<long long int> ar(n);       vector<long long int> arr(n + 2, 0);       vector<long long int> l[n + 2];       vector<long long int> ind(n + 2, 0);       for (long long int(i) = (0); (i) < (n); (i)++) {         cin >> ar[i];         arr[ar[i]] += 1;         l[ar[i]].push_back(i);       }       priority_queue<pair<long long int, long long int>> pq;       long long int k = -1;       for (long long int(i) = (1); (i) < (n + 2); (i)++) {         if (k == -1 && arr[i] == 0) {           k = i;         }         if (arr[i] != 0) {           pq.push({arr[i], i});         }       }       vector<long long int> arr2(n, -1);       for (long long int(i) = (0); (i) < (x); (i)++) {         pair<long long int, long long int> p1;         p1 = pq.top();         pq.pop();         arr2[l[p1.second][ind[p1.second]]] = p1.second;         ind[p1.second] += 1;         p1.first -= 1;         if (p1.first != 0) pq.push(p1);       }       vector<long long int> temp;       for (long long int(i) = (0); (i) < (n); (i)++) {         if (arr2[i] == -1) {           temp.push_back(ar[i]);         }       }       long long int d = (n - x) / 2;       vector<long long int> temp2 = temp;       sort((temp2).begin(), (temp2).end());       map<long long int, long long int> m1;       for (long long int(i) = (0); (i) < (temp2.size()); (i)++) {         m1[i] = l[temp2[i]][ind[temp2[i]]];         ind[temp2[i]] += 1;       }       for (long long int(i) = (0); (i) < (temp2.size()); (i)++) {         long long int j = (i + d) % temp2.size();         arr2[m1[j]] = temp2[i];       }       long long int c = 0;       for (long long int(i) = (0); (i) < (n); (i)++) {         if (arr2[i] == ar[i]) {           x--;           if (x < 0) {             c++;             arr2[i] = k;           }         }       }       if (c < n - y) {         for (long long int(i) = (0); (i) < (n); (i)++) {           if (arr2[i] != k && arr2[i] != ar[i]) {             c++;             arr2[i] = k;           }           if (c < n - y)             continue;           else             break;         }       }       if (c > n - y) {         cout <<  NO n ;       } else {         cout <<  YES n ;         for (long long int(i) = (0); (i) < (n); (i)++) {           cout << arr2[i] <<    ;         }         cout <<   n ;       }     }     return 0;   }   