#include<bits/stdc++.h>
#define ll long long int
#define pb push_back
#define fastio ios_base::sync_with_stdio(0);    cin.tie(0); cout.tie(0);
#define fr(i, m, n)   for(int i=m;i<n;i++)
#define frr(i, a, b) 	for(int i=a; i>b; i--)
#define w(tt) int tt; 	cin>>tt; while(tt--)
#define vi(ty) vector<ty> 
#define vvi(ty)	vector<vector<ty>> 
#define umap(ty) unordered_map<ty, ty> 
#define umapp(ty, tyy) unordered_map<ty, tyy>
#define pii pair<int, int> 
#define F first
#define S second
#define I insert
using namespace std;

void file(){
	#ifndef ONTLINE_JUDGE
		freopen("input.txt", "r", stdin);
		freopen("output.txt", "w", stdout);
	#endif
}

void solve(int n, map<int, int, greater<int> > mp){

	bool flag = true;
	vi(pii)	v;

	auto it = mp.begin();
	int start = (*it).F, end = INT_MIN;
	int ss = start;
	mp[start]--;
	if(mp[start]==0)	mp.erase(start);

	for(auto it : mp){
		//cout<<it.F<<" : ";
		ss = start;
		v.clear();
		map<int, int, greater<int> > mmap = mp;
		end = it.F;
		mmap[end]--;
		if(mmap[end]==0)	mmap.erase(end);

		v.pb({ss, end});
		int temp = 0;
		int a, b;
		flag = true;
		for(auto itt : mmap){
			if(itt.S==0)	continue;
			int a = itt.F;
			while(mmap[a]){
				temp++;
				if(temp>n)	break;
				mmap[itt.F]--;
				//cout<<itt.F<<" "<<ss<<", ";
				b = ss-(itt.F);
				if(mmap.find(b)!=mmap.end() && mmap[b]){

					mmap[b] --;
					//if(mmap[b]==0)	mmap.erase(b);

					ss = itt.F;
					v.pb({ss, b});
				}
				else{	flag = false;
					break;
				}}
		}
		if(v.size()>=n+1){	flag = true;	break;}
		//cout<<endl;
	}

	if(!flag){
		cout<<"NO"<<endl;	return;
	}

	cout<<"YES"<<endl;
	cout<<v[0].F + v[0].S<<endl;
	cout<<v[0].F<<" "<<v[0].S<<endl;
	for(int i=1; i<=n; i++)	cout<<v[i].F<<" "<<v[i].S<<endl;

}


int main(){
	fastio	//file();
	w(tt){
		int n;	cin>>n;	n=2*n;map<int, int, greater<int> > mp;
		fr(i, 0, n){	int x;	cin>>x;	mp[x]++;	}

		solve(n/2-1, mp);
	}
}