/* Flare Up Like A Flame */
// Start Time:
#include<bits/stdc++.h>
using namespace std;
#define ff                first
#define ss                second
#define MX                1000000
#define ll                long long
#define pb                push_back
#define pi                acos(-1.0)
#define PQ                priority_queue
#define mod               1000000007
#define eps               1/1000000000
#define pii               pair<int,int>
#define pll               pair<ll,ll>
#define endl              "\n"
#define Fast              ios::sync_with_stdio(0); //cin.tie(0); cout.tie(0)
#define bug(a)            cout<<#a<<":"<<a<<endl
#define TC(tc)            cout<<"Case "<<tc++<<": "
#define all(x)            (x).begin(),(x).end()
#define allr(x)           (x).rbegin(),(x).rend()
#define Mul(a,b)          (a%mod * b%mod)%mod;
#define Add(a,b)          (a%mod + b%mod)%mod;
#define mem(a,b)          memset(a, b, sizeof(a))
#define double_print(x,a) cout<<fixed<<setprecision(x)<<a<<endl
ll tc=1;

int main()
{
    Fast;

    ll t;
    cin>>t;
    while(t--)
    {
        ll n;
        cin>>n;

        vector<ll>v;
        for(int i=0; i<2*n; i++)
        {
            ll x;
            cin>>x;
            v.pb(x);
        }

        sort(allr(v));

        vector<pll>w;
        ll ok=1,ans=0;
        for(int i=1; i<v.size(); i++)
        {
            map<ll,ll>mp;
            for(int k=0; k<v.size(); k++)
                mp[v[k]]++;

            ll last=v[0];
            ok=1;
            ans=v[i]+v[0];
            w.pb({v[i],v[0]});
            mp[v[i]]--;
            mp[v[0]]--;

            for(int j=1; j<v.size(); j++)
            {
                if(i==j || !mp[v[j]])
                    continue;
                mp[v[j]]--;
                if(mp[last-v[j]] && last>v[j])
                {
                    mp[last-v[j]]--;
                    w.pb({v[j],last-v[j]});
                    last=v[j];
                }
                else
                {
                    ok=0;
                    break;
                }
            }

            if(ok)
                break;
            else
                w.clear();
        }

        if(ok)
        {
            cout<<"YES\n";
            cout<<ans<<endl;
            for(int i=0; i<w.size(); i++)
                cout<<w[i].ff<<" "<<w[i].ss<<endl;
        }
        else
            cout<<"NO\n";

    }

    return 0;
}
