#include <bits/stdc++.h>
#include <fstream>
using namespace std;
#define read(type) readInt<type>() // Fast read
#define ll long long
#define nL "n"
#define pb push_back
#define mk make_pair
#define pii pair<int, int>
#define a first
#define b second
#define vi vector<int>
#define all(x) (x).begin(), (x).end()
#define umap unordered_map
#define uset unordered_set
#define MOD 1000000007
#define imax INT_MAX
#define imin INT_MIN
#define exp 1e9
#define sz(x) (int((x).size()))
vector<int> sort_indexes(vector<int> v) {
vector<pair<int,int>> pairs;
for(auto i = 1; i <= (int)v.size(); i++) {
pairs.pb(mk(v[i-1], i));
}
sort(all(pairs));
vector<int> indices;
for(auto i = 0; i < (int)pairs.size(); i++) {
indices.pb(pairs[i].b);
}
return indices;
}
void solve() {
int n; cin >> n;
vector<int> x(n, -1); vector<bool> xUsed(n+1, false);
vector<int> y(n, -1); vector<bool> yUsed(n+1, false);
bool vaild = true;
if (n==1) {
int p; cin >> p;
cout << "YES" << endl;
cout << n << endl;
cout << n << endl;
return;
}
vector<int> d; for(auto i = 0; i < n; i++) {int tmp; cin >> tmp; d.pb(tmp);}
vector<int> unsortD = d;
sort(all(d));
for(auto i = 0; i < n; i++) {
cout << "Processing " << d[i] << endl;
if (!xUsed[d[i]]) {
xUsed[d[i]] = true;
x[i] = d[i];
cout << "Start looping " << d[i]-1 << endl;
for(auto j = d[i]-1; j > 0; j--) {
if (!yUsed[j]) {
yUsed[j] = true;
y[i] = j;
break;
}
}
cout << "y[i] Val: " << y[i] << endl;
if (y[i] == -1) {
cout << "NO" << endl;
return;
}
} else if (!yUsed[d[i]]) {
yUsed[d[i]] = true;
y[i] = d[i];
for(auto j = d[i]-1; j > 0; j--) {
if (!xUsed[j]) {
xUsed[j] = true;
x[i] = j;
break;
}
}
cout << "x[i] Val: " << y[i] << endl;
if (x[i] == -1) {
cout << "NO" << endl;
return;
}
} else {
cout << "NO" << endl;
return;
}
}
cout << "YES" << endl;
vector<int> res = sort_indexes(unsortD);
int s = res.size();
for(auto i = 0; i < s; i++) {
cout << x[res[i]-1] << " ";
}
cout << endl;
for(auto i = 0; i < s; i++) {
cout << y[res[i]-1] << " ";
}
cout << endl;
return;
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(null);
int t; cin >> t;
while(t--) {
solve();
}
return 0;
}