#include<bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int t; cin >> t;
    while(t--){
        int n; cin >> n;
        vector<int> a(2*n);

        for(int&i : a) cin >> i;

        int mx = max_element(a.begin(),a.end())-a.begin();

        int found = -1;
        for(int i=0;i<2*n;i++){
            multiset<int> st;

            if(i==mx) continue;

            for(int j=0;j<2*n;j++){
                if(j==mx || j==i) continue;
                st.insert(a[j]);
            }

            int cur = a[mx];

            while(true){
                if(st.empty()) break;
                int lst = *st.rbegin();
                st.erase(st.find(lst));

                if(st.find(cur-lst)==st.end()){
                    break;
                }

                st.erase(st.find(cur-lst));
                cur = max(lst,cur-lst);
            }
            if(st.empty()){
                found = i;
                break;
            }
        }

        if(found==-1){
            cout << "NO" << "\n";
        }
        else{
            cout << "YES\n";
            cout << a[mx] + a[found] << "\n";
            cout << a[mx] << " " << a[found] << "\n";

            multiset<int> st;
            for(int j=0;j<2*n;j++){
                if(j==mx || j==found) continue;
                st.insert(a[j]);
            }

            int cur = a[mx];

            while(true){
                if(st.empty()) break;
                int lst = *st.rbegin();
                st.erase(st.find(lst));
                st.erase(st.find(cur-lst));

                cout << lst << " " << cur-lst << "\n";
                cur = max(lst,cur-lst);
            }
        }
    }

    return 0;
}