#模拟
枚举 $x$,那么剩下的所有数当中最大的那个就一定是 $a_i\sim a_n$ 的和,因为 $1\le b_i\le 10^9$,$a$ 同理。判断一下剩下的那个数是否合法就行了。
```cpp
#include <iostream>
#include <set>
using namespace std;
using LL = long long;
const LL kMaxN = 2e5 + 5;
LL a[kMaxN], t, n, sum, ans1, ans2;
multiset<LL> s;
int main() {
for (cin >> t; t; t--) {
cin >> n;
sum = 0, ans1 = -1;
s.clear();
for (LL i = 1; i <= n + 2; i++) {
cin >> a[i];
s.insert(a[i]);
sum += a[i];
}
for (LL i = 1; i <= n + 2; i++) {
s.erase(s.find(a[i]));
if (*s.rbegin() == sum - a[i] - *s.rbegin()) {
ans1 = a[i];
ans2 = *s.rbegin();
break;
}
s.insert(a[i]);
}
if (!~ans1) {
cout << "-1\n";
continue;
}
for (LL i = 1; i <= n + 2; i++) {
if (a[i] == ans1) {
ans1 = 0;
} else if (a[i] == ans2) {
ans2 = 0;
} else {
cout << a[i] << ' ';
}
}
cout << '\n';
}
return 0;
}
```