#include<bits/stdc++.h>
//#pragma GCC optimize ("O2")
#define x first
#define y second
#define lson u<<1
#define rson u<<1|1
#define pb push_back
#define pu pushup
#define mk make_pair
using namespace std;
#define ll long long
#define debug puts("----");
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
#define int long long 
#define ios ios::sync_with_stdio(0);
bool st[1000010];
int n;
int a[2200];
void solve()
{
	cin>>n;
	n*=2;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	map<int,int>mp;
	vector<pair<int,int >>res;
	sort(a+1,a+1+n);
	res.clear();
	int r=0;
	for(int i=1;i<n;i++)
	{
		mp.clear();
		res.clear();
		for(int j=1;j<=n;j++)
			mp[a[j]]++;
			int tot=a[n]+a[i];
			r=tot;
		for(int j=n;j>=1;j--)
		{
			if(!mp[a[j]])	continue;
			if(mp[tot-a[j]]>0)
			{
				mp[a[j]]--;
				if(!mp[tot-a[j]])	break;
				mp[tot-a[j]]--;
				res.push_back({a[j],tot-a[j]});
				tot=max(a[j],tot-a[j]);
			}
			else	break;
			if(res.size()==n/2)	break;
		}
		if(res.size()==n/2)
			break;
	}
	if(res.size()==n/2)
		{
			cout<<"YES"<<endl;
			cout<<r<<endl;
			for(auto x:res)
			{
				cout<<x.first<<" "<<x.second<<endl;
			}

		}
		else
			puts("NO");
}
signed main()
{	
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}