#include<bits/stdc++.h>
using namespace std;
const int N=2e3+5;
int a[N];
bool vis[N];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int t,n;
    map <int,int> mp1;
    for(cin>>t;t;t--)
    {
        mp1.clear();
        cin>>n;
        n<<=1;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            mp1[ a[i] ]++;
        }

        sort(a+1,a+1+n);

        int j;
        for(j=n-1;j;j--)
        {
            map <int,int> mp2(mp1);
            bool f=true;

            int maxl=a[n];
            mp2[ a[n] ]--;
            mp2[ a[j] ]--;

            for(map <int,int> :: reverse_iterator it=mp2.rbegin();it!=mp2.rend();)
            {
                if( (it->second) <= 0)
                {
                    it++;
                    continue;
                }
                int a1 = it->first;
                int a2 = maxl-a1;
                if( ( mp2[a1]>=1 && mp2[a2]>=1 && (a1!=a2) ) || ( (a1==a2) && mp2[a1]>=2 ) )
                {
                    mp2[a1]--;
                    mp2[a2]--;
                    maxl = a1 ;
                }
                else
                {
                    f=false;
                    break;
                }
                if(mp2[a1]==0) it++;
            }
            if(f) break;

        }

        if(!j)
        {
            cout<<"NO\n";
            continue;
        }

        memset(vis,0,sizeof(vis));
        cout<<"YES\n";
        vis[j]=1;
        vis[n]=1;
        int maxl=a[n];
        cout<<a[n]+a[j]<<"\n";
        cout<<a[n]<<" "<<a[j]<<"\n";
        for(int i=n-1;i;i--)
        {
            if(vis[i]) continue;
            for(int k=1;k<i;k++)
            {
                if(vis[k]) continue;
                if( maxl-a[i] == a[k] )
                {
                    cout<<a[k]<<" "<<a[i]<<"\n";
                    vis[i]=1;
                    vis[k]=1;
                    maxl=a[i];
                }
            }
        }

        ;
    }
    return 0;
}
