#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = double;
const int mxn = 2e3+10;
const ll inf = 1e18;
int a[mxn];

signed main() {
	ios_base::sync_with_stdio(0); cin.tie(0);

	int tc; cin>>tc;
	while(tc--) {
		int n; cin>>n;
		for(int i=0; i<2*n; i++) {
			cin>>a[i];
		}
		sort(a, a+2*n, greater<int> ());
		//cout << "a: "; for(int i=0; i<2*n; i++) cout << a[i] << " "; cout << '\n';
		int x = -1;
		vector<pair<int, int> > ans;
		multiset<int> S;
		bool ok = 0;


		for(int i=1; i<2*n; i++) {
			x = a[i]+a[0]; ans.clear(); ans.push_back({a[i], a[0]});
			S.clear();
			for(int j=1; j<2*n; j++) if(j!=i) S.insert(a[j]);
			int cur = 1;
			int now = a[0];

			bool inner_ok = 1;
			while(cur<2*n) {
				while(cur<2*n and S.find(a[cur])==S.end()) cur++;
				if(cur==2*n) break;
				int cand = now-a[cur];
				assert(S.find(a[cur])!=S.end());
				S.erase(S.find(a[cur]));
				if(S.find(cand)==S.end()) {
					inner_ok = 0;
					break;
				}
				assert(S.find(cand)!=S.end());
				S.erase(S.find(cand));
				ans.push_back({cand, a[cur]});
				now = a[cur];
			}
			/*cout << "i = " << i << ":\n";
			cout << x << '\n';
			for(auto y:ans) {
				cout << y.first << " " << y.second << '\n';
			}
			cout << "cur = " << cur << '\n';*/
			ok = inner_ok;
			if(ok) break;
		}

		if(!ok) {
			cout << "NO\n";
		}
		else {
			cout << "YES\n";
			cout <<x << '\n';
			for(auto y:ans) {
				cout << y.first << " " << y.second << '\n';
			}
		}
 	}






	return 0;
}