#include<bits/stdc++.h>
using namespace std;

#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char *name, Arg1 &&arg1) {
	cerr << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args&&... args) {
	const char *comma = strchr(names + 1, ',');
	cerr.write(names, comma - names) << " : " << arg1 << " | ";
	__f(comma + 1, args...);
}
#define pi 3.141592653589
#define MOD 1000000007
#define to() int tt; cin>>tt; while(tt--)
#define pb push_back
#define in insert
#define mp make_pair
#define ff first
#define ss second
#define si(s) s.size()
#define fori(it,v) for(it=v.begin();it!=v.end(); it++)
#define for1(i,low,high) for(int i=low;i<high;i++)
#define for2(i,low,high) for(int i=low;i<=high;i++)
#define rev(i,high,low)  for(int i=high;i>=low ;i--)
#define all(x) x.begin(), x.end()
#define fil(x,i) memset(x,i,sizeof(x));
#define setbits(x) __builtin_popcount(x)
#define boost ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define read freopen("input.txt","r",stdin)
#define write freopen("output.txt","w",stdout)
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
void i_o() {
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin) ;
	freopen("output.txt", "w", stdout) ;
#endif
}



int main(){

	 boost; i_o();
	 to(){
	 	int n; cin>>n; n=2*n;
	 	multiset<int>m;
	 	vector<int>a(n);
	 	for(int i=0;i<n;i++){
	 		cin>>a[i]; m.in(a[i]);
	 	}
	 	sort(a.rbegin(),a.rend());
	 	bool no=true;
	 	for(int i=1;i<n;i++){
	 		multiset<int>b=m;
	 		int x=a[0]+a[i];
	 		int x1=x;
	 		int a1=a[0],a2=a[i];
	 		vector<pair<int,int> >v;
	 		bool f=true;
	 		while(b.size()>0 && f){
	 			if(b.find(a1)!=b.end()) b.erase(b.find(a1));
	 			else{ f=false; break;}
	 			if(b.find(a2)!=b.end()) b.erase(b.find(a2));
	 			else{ f=false; break;}
	 			v.pb({a1,a2});
	 			x=max(a1,a2);
	 			if(b.size()==0) break;
	 			a1=*(b.rbegin());
	 			a2=x-a1;
	 		}
	 		if(f){
	 			cout<<"YES"<<endl;
	 			cout<<x1<<endl;
	 			for(int i=0;i<v.size();i++){
	 				cout<<v[i].ff<<" "<<v[i].ss<<endl;
	 			}
	 			no=false;
	 			break;
	 		}
	 	}
	 	if(no) cout<<"NO"<<endl;
	 }
	 

	return 0;
}
