CoDe
#include <bits/stdc++.h>
#define int long long
#define db double
using namespace std;
const int N = 2001;
int t, n, x;
int arr[N];
bool cmp(int i, int j) { return i > j; }
multiset<int> mul;
vector<int> ans1;
vector<int> ans2;
bool judge(int i) {
ans1.clear();
ans2.clear();
mul.clear();
for (int j = 2; j <= 2 * n; j++)
if (j != i)
mul.insert(arr[j]);
ans1.push_back(arr[1]);
ans2.push_back(arr[i]);
x = arr[1];
for (int i = 2; i <= n; i++) {
int maxx = *mul.rbegin();
if (x != maxx * 2 || mul.count(maxx) >= 2) {
ans1.push_back(*mul.rbegin());
ans2.push_back(x - *mul.rbegin());
mul.erase(mul.find(x - *mul.rbegin()));
x = *mul.rbegin();
mul.erase(mul.find(x));
} else {
return false;
}
}
return true;
}
signed main() {
cin >> t;
while (t--) {
bool print = false;
cin >> n;
for (int i = 1; i <= n + n; i++)
cin >> arr[i];
sort(arr + 1, arr + n + n + 1, cmp);
for (int i = 2; i <= 2 * n; i++) {
if (judge(i)) {
puts("YES");
cout << arr[1] + arr[i] << '\n';
for (int i = 0; i < n; i++)
cout << ans1[i] << ' ' << ans2[i] << '\n';
print = false;
break;
}
}
if (!print)
puts("NO");
}
}