#include<bits/stdc++.h>
#define HohleFeuerwerke using namespace std
#define rep(i,ultImakdow,b) for(register int i=(ultImakdow);i<=(b);i++)
#define per(i,ultImakdow,b) for(register int i=(ultImakdow);i>=(b);i--)
HohleFeuerwerke;const int N=1009;
inline int read(){
	int s=0,f=1;char c=getchar();
	for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
	for(;isdigit(c);c=getchar()) s=s*10+c-'0';
	return s*f;
}
inline void write(int x){
	if(x<0) putchar('-'),x=-x;
	if(x>=10) write(x/10);
	putchar('0'+x%10);
}
int ultImakdow[N],cnt[N*N];

signed main() {
	int T=read();
	while(T--) {
		int n; scanf("%d",&n); n*=2;
		rep(i,1,n) scanf("%d",&ultImakdow[i]);
		sort(ultImakdow+1,ultImakdow+n+1);
		bool ans=0; memset(cnt,0,sizeof(cnt));
		per(h,n-1,1) {
			rep(i,1,n) cnt[ultImakdow[i]]=0;
			rep(i,1,n) cnt[ultImakdow[i]]++;
			cnt[ultImakdow[n]]--, cnt[ultImakdow[h]]--;
			int mx=ultImakdow[n];
			bool flag=0;
			per(i,n-1,1) {
				if(cnt[ultImakdow[i]]==0) continue;
				int k=mx-ultImakdow[i];
				if(k<0||cnt[k]==0) break;
				cnt[k]--, cnt[ultImakdow[i]]--;
				mx=ultImakdow[i];
			}
			rep(i,1,n) if(cnt[ultImakdow[i]]!=0) flag=1;
			if(flag==1) continue;
			ans=1;
			printf("YES\n%d\n%d %d\n",ultImakdow[n]+ultImakdow[h],ultImakdow[n],ultImakdow[h]);
			rep(i,1,n) cnt[ultImakdow[i]]=0;
			rep(i,1,n) cnt[ultImakdow[i]]++;
			cnt[ultImakdow[n]]--, cnt[ultImakdow[h]]--;
			mx=ultImakdow[n];
			per(i,n-1,1) {
				if(cnt[ultImakdow[i]]==0) continue;
				int k=mx-ultImakdow[i];
				cnt[k]--, cnt[ultImakdow[i]]--;
				mx=ultImakdow[i];
				printf("%d %d\n",ultImakdow[i],k);
			}
			break;
		}
		if(ans==0) puts("NO");
	}
	return 0;
}

