#include <bits/stdc++.h>
#define F first 
#define S second 
#define endl "\n"
#define Endl "\n"
#define emdl "\n"
#define mod 1000000007
#define pb push_back
// #define mp make_pair
#define all(x) x.begin(),x.end()
using namespace std;
// bool sortBy(const pair<int,pair<int,int>> &a,const pair<int,pair<int,int>> &b){
// 	if(a.S.F==b.S.F)
// 		return a.F<b.F;
// 	return a.S.F<b.S.F;
// }

// #define MAXN 50003
// int pf[MAXN]; 
// vector<int> primes;
// void sieve(){
// 	long long int i,j; 
//     pf[1] = 1; 
//     for (i=2; i<MAXN; i++) 
//     pf[i] = i;   
//     for (i=2; i*i<MAXN; i++){ 
//         if (pf[i] == i){
//             for (j=i*i; j<MAXN; j+=i) 
//                 if (pf[j]==j) 
//                     pf[j] = i; 
//         } 
//     } 
// 	for(int i=2;i<MAXN;i++){
// 		if(pf[i]==i){
// 			primes.push_back(i);
// 		}
// 	}
// }
// vector<int> factors(int x){ 
//     vector<int> ret; 
//     while (x != 1){ 
// 		int fact=pf[x];
//         ret.push_back(pf[x]); 
// 		while(fact!=1&&x%fact==0)
//         x/=fact; 
//     } 
//     return ret; 
// } 
// set<long long int>poww;
// void init(){
// 	long long int temp=1;
// 	for(int i=1;i<43;i++){
// 		poww.insert(temp);
// 		temp*=2;
// 	}
// }  

// int summ(long long int n){
//     int cnt=0;
//     while(n){
//         cnt+=n%10;
//         n/=10;
//     }
//     return cnt;
// }

void init(){
  
}




int main() {		
	ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
	int qwe=1;
	
 	cin>>qwe;
	init();
	//sieve();
	while(qwe--){

		int n;
		cin>>n;
		n+=n;
		

		vector<int> v(n);
		for(int i =0; i< n;i++){
			cin>>v[i];
		}
		int flag  = 0;
		sort(all(v));
map<int,int> a;
		
		for(int twerp =0;twerp<n-1;twerp++){

			for(int i=0;i<n;i++){
				a[v[i]]++;
			}
			a[v[twerp]]--;
			int num = v[n-1];
			a[num]--;
			
			int p =n-2;

			vector<pair<int,int>> pa;

			while(true){
				if(p<0){
					break;
				}
				if(a[v[p]]==0){
					p--;
				continue;
				}

				if(a[num-v[p]]==0 ||(num-v[p]==v[p]&&a[num-v[p]]==1)){
					break;
				}
				pa.pb({v[p],num-v[p]});
				a[v[p]]--;
				a[num-v[p]]--;
				num = v[p];
				p--;
			}
			int ans = 0;
			for(int i =0;i<n;i++){
				ans+=a[v[i]];
			}

			a.clear();
			if(ans!=0){
				continue;
			}

			flag = 1;

			cout<<"YES"<<endl<<v[twerp]+v[n-1]<<endl<<v[n-1]<<" "<<v[twerp]<<endl;

			for(auto j:pa){
				cout<<j.F<<" "<<j.S<<endl;
			}
			break;

		}

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


	}

	return 0;
}

