func_code_string: /********   All Required Header Files ********/   #include <iostream>   #include <string>   #include <vector>   #include <algorithm>   #include <sstream>   #include <queue>   #include <deque>   #include <bitset>   #include <iterator>   #include <list>   #include <stack>   #include <map>   #include <set>   #include <functional>   #include <numeric>   #include <utility>   #include <limits>   #include <time.h>   #include <math.h>   #include <stdio.h>   #include <string.h>   #include <stdlib.h>   #include <assert.h>      using namespace std;   /*******  All Required define Pre-Processors and typedef Constants *******/   #define ll long long int   #define ull unsigned long long int   #define li long int   #define uli unsigned long int   #define MOD 1e10+7   #define all(a) a.begin(),a.end()   #define FOR(i,j,k,l) for(int i=j;i<k;i+=l)   #define RFOR(i,j,k,l) for(int i=j;i>=k;i-=l)   #define REP(i,j) FOR(i,0,j,1)   #define RREP(i,j) FOR(i,j,0,1)   #define PB push_back   #define _finout ios::sync_with_stdio(0);cin.tie(0)   typedef vector<int> VI;   typedef vector<char> VC;   typedef vector<string> VS;   typedef vector<VI> VVI;   typedef vector<ll> VL;   typedef set<int> SETI;   typedef map<int,int> MPII;   typedef multiset<int> MSETI;   // const int N = (int)(2*1e5 +10);   long long sq(int x){return 1ll * x*x;}   // ll dp[N];   // ll lev[N];   // VL adj[N];   bool isprime(long long int num){       for(long long int i=2;i<=sqrt(num);i++){           if (num%i == 0) return false;       }       return true;   }   vector<int> check(int n,vector<int>a,int x){       MSETI s;       for(auto e:a) s.insert(e);       vector<int> res;       for(int i=0;i<n;i++){           auto it1 = s.end();           it1--;           int y = x - *it1;           s.erase(it1);           auto it2 = s.find(y);           if(it2==s.end()) return {};           res.push_back(x-y);           res.push_back(y);           x = max(x-y,y);           s.erase(it2);       }       return res;   }   void solve()   {       int n;       cin >> n;       vector<int> a(2 * n);       for (int i = 0; i < 2 * n; i++)           cin >> a[i];       sort(a.begin(), a.end());       for (int i = 0; i < 2 * n - 1; i++)       {           int x = a[i] + a[2 * n - 1];           vector<int> res = check(n, a, x);           if (res.size())           {               cout <<  YES n ;               cout << x <<   n ;               for (int j = 0; j < n; j++)               {                   cout << res[2 * j] <<     << res[2 * j + 1] <<   n ;               }               return;           }       }       cout <<  NO n ;   }   int main(){       _finout;       int T;       cin>>T;       while(T--){           solve();       }   }   