#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;
}
