#include<bits/stdc++.h>
#include<vector>
#include<math.h>
#define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
int main(){
fast
int t;
cin>>t;
while(t--){
int n;
cin>>n;
int a[n];
int flag = 0;
set<int> s;
unordered_map<int,int> mp;
int max = INT_MIN;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]>max){
max = a[i];
}
mp[a[i]]++;
if(mp[a[i]]>2){
flag = 1;
break;
}
}
if(mp[max]>1){
flag = 1;
}
if(flag==1){
cout<<"NO"<<endl;
}
else{
sort(a,a+n);
vector<int> v;
for(int i=0;i<n;i++){
s.insert(a[i]);
if(mp[a[i]]==2){
v.push_back(a[i]);
mp[a[i]]--;
}
}
cout<<"YES"<<endl;
for(auto &x:s){
cout<<x<<" ";
}
sort(v.begin(),v.end(),greater<int>());
for(auto &y:v){
cout<<y<<" ";
}cout<<endl;
v.clear();
s.clear();
mp.clear();
}
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxtYXRoLmg+CiNkZWZpbmUgZmFzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpewogICAgCiAgICBmYXN0CiAgICBpbnQgdDsKICAgIGNpbj4+dDsKICAgIHdoaWxlKHQtLSl7CiAgICAgICAgaW50IG47CiAgICAgICAgY2luPj5uOwogICAgICAgIGludCBhW25dOwogICAgICAgIGludCBmbGFnID0gMDsKICAgICAgICBzZXQ8aW50PiBzOwogICAgICAgIHVub3JkZXJlZF9tYXA8aW50LGludD4gbXA7CiAgICAgICAgaW50IG1heCA9IElOVF9NSU47CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgICAgIGNpbj4+YVtpXTsKICAgICAgICAgICAgaWYoYVtpXT5tYXgpewogICAgICAgICAgICAgICAgbWF4ID0gYVtpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBtcFthW2ldXSsrOwogICAgICAgICAgICBpZihtcFthW2ldXT4yKXsKICAgICAgICAgICAgICAgIGZsYWcgPSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIGlmKG1wW21heF0+MSl7CiAgICAgICAgICAgIGZsYWcgPSAxOwogICAgICAgIH0KICAgICAgICBpZihmbGFnPT0xKXsKICAgICAgICAgICAgY291dDw8Ik5PIjw8ZW5kbDsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgc29ydChhLGErbik7CiAgICAgICAgICAgIHZlY3RvcjxpbnQ+IHY7CiAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgICAgICAgICAgcy5pbnNlcnQoYVtpXSk7CiAgICAgICAgICAgICAgICBpZihtcFthW2ldXT09Mil7CiAgICAgICAgICAgICAgICAgICAgdi5wdXNoX2JhY2soYVtpXSk7CiAgICAgICAgICAgICAgICAgICAgbXBbYVtpXV0tLTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgIAogICAgICAgICAgICBjb3V0PDwiWUVTIjw8ZW5kbDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvcihhdXRvICZ4OnMpewogICAgICAgICAgICAgICAgY291dDw8eDw8IiAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNvcnQodi5iZWdpbigpLHYuZW5kKCksZ3JlYXRlcjxpbnQ+KCkpOwogICAgICAgICAgICBmb3IoYXV0byAmeTp2KXsKICAgICAgICAgICAgICAgIGNvdXQ8PHk8PCIgIjsKICAgICAgICAgICAgfWNvdXQ8PGVuZGw7CiAgICAgICAgICAgIHYuY2xlYXIoKTsKICAgICAgICAgICAgcy5jbGVhcigpOwogICAgICAgICAgICBtcC5jbGVhcigpOwogICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICAKICAgICAgICAKICAgICAgIAogICAgICAgIH0KICAgIH0K