#include <bits/stdc++.h>
using namespace std;
void solve() {
  int n, x, y;
  cin >> n >> x >> y;
  vector<int> nums(n);
  vector<int> a(n);
  vector<vector<int>> freq(n + 1);
  vector<vector<int>> ind(n + 1 + 1);
  vector<bool> mis(n);
  for (int i = 0; i < n; i++) {
    cin >> nums[i];
    mis[i] = false;
    ind[nums[i]].push_back(i);
  }
  for (int i = 1; i <= n + 1; i++) {
    freq[ind[i].size()].push_back(i);
  }
  int f = n;
  for (int k = 0; k < x; k++) {
    while (freq[f].empty()) {
      f--;
    }
    int col = freq[f].back();
    int idx = ind[col].back();
    a[idx] = col;
    ind[col].pop_back();
    freq[f].pop_back();
    freq[f - 1].push_back(col);
  }
  while (f > 0 && freq[f].empty()) f--;
  if (2 * f > 2 * n - x - y) {
    cout << "NO\n";
    return;
  }
  vector<int> ve;
  for (int i = 1; i <= f; i++) {
    for (int color : freq[i]) {
      ve.insert(ve.end(), ind[color].begin(), ind[color].end());
    }
  }
  int mismatch = n - y;
  auto makemismatch = [&](int i) {
    a[i] = freq[0][0];
    mismatch--;
    mis[i] = true;
  };
  for (int i = 0; i < n - x; i++) {
    a[ve[i]] = nums[ve[(i + (n - x) / 2) % (n - x)]];
    if (a[ve[i]] == nums[ve[i]]) {
      makemismatch(ve[i]);
    }
  }
  for (int i = 0; mismatch > 0; i++) {
    if (!mis[ve[i]]) makemismatch(ve[i]);
  }
  cout << "YES\n";
  for (int i = 0; i < n; i++) {
    cout << a[i] << ' ';
  }
  cout << '\n';
}
int main() {
  int t;
  cin >> t;
  while (t--) {
    solve();
  }
}
