#include <bits/stdc++.h>
using namespace std;
using ll = long long;
/*
* _
* 123445352511234
* 1234567
* 12
* 344 3
*
* 123456789A
* 1X1
* 4 = 1
* 3 = 2
*
* 514234312523514
* 312231123
*
* n&1: let k = n/2
*
*/
void imp() {
cout << "NO\n";
}
void solve() {
int n, k;
cin >> n >> k;
if (n == 1 || (n == 2 && k == 1) || (n == 3 && k == 1)) {
cout << "YES\n";
return 0;
}
if (n <= 3) return imp();
vector<int> f(k + 1);
for (int i = 0; i < n; i++) {
int c;
cin >> c;
f[c]++;
}
if (n % 2 == 0) {
for (int c = 1; c <= k; c++) {
if (f[c] % 2 == 1) {
return imp();
}
}
cout << "YES\n";
vector<int> res;
for (int c = 1; c <= k; c++) {
for (int i = 0; i < f[c] / 2; i++) {
res.push_back(c);
}
}
for (int e : res) cout << e << " ";
reverse(res.begin(), res.end());
for (int e : res) cout << e << " ";
cout << "\n";
return;
}
cout << "YES\n";
vector<int> res;
for (int c = 1; c <= k; c++) {
if (f[c] & 1) continue;
for (int i = 0; i < f[c] / 2; i++) {
res.push_back(c);
}
}
for (int e : res) cout << e << " ";
for (int c = 1; c <= k; c++) {
if ((f[c] & 1) == 0) continue;
for (int i = 0; i < f[c]; i++) {
cout << c << " ";
}
}
reverse(res.begin(), res.end());
for (int e : res) cout << e << " ";
cout << "\n";
return;
}
signed main() {
cin.tie(0)->sync_with_stdio(0);
int t;
cin >> t;
while (t--) {
solve();
}
}