#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t;
  cin >> t;
  while (t--) {
    int n, x, y;
    cin >> n >> x >> y;
    int b[n];
    int kiekis[n + 2];
    for (int i = 1; i <= n + 1; i++) kiekis[i] = 0;
    vector<int> karoliukai[n + 2];
    for (int i = 0; i < n; i++) {
      cin >> b[i];
      karoliukai[b[i]].push_back(i);
      kiekis[b[i]]++;
    }
    int nepanaudota;
    priority_queue<pair<int, int> > eile;
    for (int i = 1; i <= n + 1; i++) {
      eile.push({kiekis[i], i});
      if (kiekis[i] == 0) nepanaudota = i;
    }
    int ats[n];
    for (int i = 0; i < n; i++) ats[i] = 0;
    auto spalvok = [&](int kuria, int kokia) {
      int id = karoliukai[kuria][karoliukai[kuria].size() - 1];
      ats[id] = kokia;
      karoliukai[kuria].pop_back();
    };
    for (int i = 0; i < x; i++) {
      pair<int, int> virsus = eile.top();
      eile.pop();
      spalvok(virsus.second, virsus.second);
      virsus.first--;
      eile.push(virsus);
    }
    vector<int> spalvos;
    int pirmas = 0;
    while (!eile.empty()) {
      pair<int, int> virsus = eile.top();
      eile.pop();
      pirmas = max(pirmas, virsus.first);
      for (int i = 0; i < virsus.first; i++) {
        spalvos.push_back(virsus.second);
      }
    }
    vector<int> perstumtos;
    for (int i = 0; i < spalvos.size(); i++) {
      int id = (i + pirmas) % spalvos.size();
      perstumtos.push_back(spalvos[id]);
    }
    bool nepavyko = false;
    int aibe_sutampa = y - x;
    for (int i = 0; i < spalvos.size(); i++) {
      if (aibe_sutampa == 0) continue;
      if (spalvos[i] == perstumtos[i]) continue;
      spalvok(spalvos[i], perstumtos[i]);
      aibe_sutampa--;
    }
    if (aibe_sutampa != 0) nepavyko = true;
    for (int i = 0; i < n; i++) {
      if (ats[i] == 0) ats[i] = nepanaudota;
    }
    if (nepavyko) {
      cout << "NO\n";
      continue;
    }
    cout << "YES\n";
    for (int i = 0; i < n; i++) cout << ats[i] << " ";
    cout << "\n";
  }
  return 0;
}
