#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>
#define ff first
#define ss second
#define mod 1000000007
using namespace std;
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t, n;
    cin >> t;
    while(t--)
    { 
        cin >> n;
        bool flag = true;
        vector<int>v(2 * n);
        for(int &i : v) cin >> i;
        multiset<int>s1;
        for(int &i : v) s1.insert(i);
        for(auto &i : v)
        {
            multiset<int>m1 = s1;
            int maxval = *m1.rbegin();
            m1.erase(m1.find(maxval));
            if(m1.find(i) == m1.end()) continue;
            m1.erase(m1.find(i));
            int temp;
            while(m1.size() > 0)
            {
                temp = *m1.rbegin();
                m1.erase(m1.find(temp));
                if(m1.find(maxval - temp) == m1.end())
                    break;
                m1.erase(m1.find(maxval - temp));
                maxval = temp;
            }
            if(m1.size() == 0)
            {
                flag = false;
                cout << "YES\n" << i + *s1.rbegin() << '\n';
                cout << i << ' ' << *s1.rbegin() << '\n';
                s1.erase(s1.find(i));
                int maxval = *s1.rbegin();
                s1.erase(s1.find(*s1.rbegin()));
                while(s1.size() > 0)
                {
                    cout << maxval - *s1.rbegin() << ' ' << *s1.rbegin() << '\n';
                    s1.erase(s1.find(maxval - *s1.rbegin()));
                    maxval = *s1.rbegin();
                    s1.erase(s1.find(maxval));
                }
                break;      
            }
        }
        if(flag) cout << "NO\n";
    }
}   