#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define int long long
#define IOS cin.sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
#pragma comment(linker, "/STACK:1024000000,1024000000")
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const double eps=1e-8;
const ll mod=1000000007;
const int inf=0x3f3f3f3f;
const ll INF=0x3f3f3f3f3f3f3f3f;
/*const ll dx[8]={-1,-1,-1,0,0,1,1,1};
const ll dy[8]={-1,0,1,-1,1,-1,0,1};*/
const ll dx[4]={-1,1,0,0};
const ll dy[4]={0,0,-1,1};
ll qpow(ll a,ll b){ll s=1;while(b>0){if(b%2==1){s=s*a;}a=a*a;b=b>>1;}return s;}
ll qpowmod(ll a, ll b, ll c){ll res, t;res=1;t=a%c;while(b){if(b & 1){res=res*t%c;}t=t*t%c;b>>=1;}return res;}
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
inline long long read(){long long k=0,f=1;char ch=getchar();while(ch<'0'|ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){k=k*10+ch-'0';ch=getchar();}return k*f;}
inline void write(long long x){if(x<0)x=-x,putchar('-');if(x>9)write(x/10);putchar(x%10+'0');}
// head
const int maxn=1e6+5;
int t,n,a[maxn],mx,pos;
int m[maxn];
queue<pii> q;
bool f(int x,int y)
{
    while(!q.empty())
        q.pop();
    for(int i=1; i<=n; i++)
    {
        m[a[i]]++;
    }
    m[x]--;
    m[y]--;
    q.push({x,y});
    int now=y;
    for(int i=n; i>=1; i--)
    {
        m[now-a[i]]--;
        m[a[i]]--;
        if(m[now-a[i]]>=0&&m[a[i]]>=0)
        {
            q.push({now-a[i],a[i]});
            now=a[i];
        }
        else
        {
            m[now-a[i]]++;
            m[a[i]]++;
        }
    }
    for(int i=1; i<=n; i++)
    {
        m[a[i]]=0;
    }
    if(q.size()==n/2)
    {
        cout<<"YES"<<endl;
        cout<<x+y<<endl;
        while(!q.empty())
        {
            cout<<q.front().fi<<' '<<q.front().se<<endl;
            q.pop();
        }
        return true;
    }
    return false;
}
signed main()
{
    //IOS;
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    cin>>t;
    while(t--)
    {
        mx=0;
        cin>>n;
        n*=2;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        sort(a+1,a+1+n);
        for(int i=1;i<=n;i++)
        {
            mx=max(mx,a[i]);
            if(mx==a[i])
                pos=i;
        }
        for(int i=1;i<=n;i++)
        {
            if(i==pos)
                continue;
            if(f(a[i],a[pos]))
                goto s1;
        }
        cout<<"NO"<<endl;
        s1:;
    }
    return 0;
}
/*

*/
