#include <iostream>   #include <bits/stdc++.h>   #include<algorithm>   #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)   #define ll long long   #define MOD 1000000007   #define f first   #define s second   #define pb push_back   #define nl   n    #define mem(arr, value) memset(arr, value, sizeof(arr))      #define vll vector<ll>   #define vb vector<bool>   #define vpll vector<pair<ll, ll>>   #define vvll vector<vector<ll>>      using namespace std;      // DEBUG   void __print(int x) { cerr << x; }   void __print(ll x) { cerr << x; }   void __print(double x) { cerr << x; }   void __print(char x) { cerr <<      << x <<     ; }   void __print(const char* x) { cerr <<     << x <<    ; }   void __print(const string& x) { cerr <<     << x <<    ; }   void __print(bool x) { cerr << (x ?  true  :  false ); }      template<typename T, typename V>   void __print(const pair<T, V>& x) { cerr <<  { ; __print(x.first); cerr <<  , ; __print(x.second); cerr <<  } ; }   template<typename T>   void __print(const T& x) { int _ = 0; cerr <<  { ; for (auto& i : x) cerr << (_++ ?  ,  :   ), __print(i); cerr <<  } ; }   void _print() { cerr <<  ] n ; }   template <typename T, typename... V>   void _print(T t, V... v) { __print(t); if (sizeof...(v)) cerr <<  ,  ; _print(v...); }   #ifndef ONLINE_JUDGE   #define dbg(x...) cerr <<  [  << #x <<  ] = [ ; _print(x)   #else   #define dbg(x...)   #endif      bool flag = false;      bool comp1(pair<pair<ll, ll>, pair<ll,ll> > a, pair<pair<ll, ll>, pair<ll, ll>> b)   {       return a.s.s < b.s.s;   }      bool comp(pair<ll,ll> a, pair<ll, ll> b)   {       return a.s < b.s;   }      struct myComp {       constexpr bool operator()(               pair< pair<ll,ll>, pair<ll,ll> > const& a,               pair< pair<ll,ll>, pair<ll,ll> > const& b)       const noexcept       {           return a.s.s < b.s.s;       }   };   ll digitSum(ll n){ll sum=0; while(n>0){sum += n%10;n=n/10;}return sum;}         void dfs(vvll &adj, vb &visited, ll v, ll e)   {      //    visited[v] = true;          for (ll i=0; i<adj[v].size(); i++)       {           ll n = adj[v][i];           if (n==e)           {               flag = true;               return;           }           dfs(adj, visited, n, e);       }      //    return false;      }      bool isSubsetSum(int set[], int n, int sum)   {       bool subset[n + 1][sum + 1];          for (int i = 0; i <= n; i++)           subset[i][0] = true;          for (int i = 1; i <= sum; i++)           subset[0][i] = false;          for (int i = 1; i <= n; i++) {           for (int j = 1; j <= sum; j++) {               if (j < set[i - 1])                   subset[i][j] = subset[i - 1][j];               if (j >= set[i - 1])                   subset[i][j] = subset[i - 1][j]                                  || subset[i - 1][j - set[i - 1]];           }       }             return subset[n][sum];   }      void solve()   {       ll n;       cin>>n;          ll b[n+2];          ll sum = 0;       for (ll i=0; i<n+2; i++)       {           cin>>b[i];           sum+=b[i];       }          sort(b, b+n+2);          ll aa = b[n+1];       ll bb = b[n];       ll x=-1;          ll temp1 = sum - b[n+1];       for (ll i=0; i<n+1; i++)       {           temp1 = temp1 - b[i];           if (temp1 == aa)           {               x = i;               break;           }           temp1 += b[i];       }          if (x == -1)       {           ll temp2 = sum - b[n] - b[n+1];              if (temp2 == b[n])           {               x = n;           }       }          if (x==-1)           cout<<-1<<endl;       else       {           for (ll i=0; i<n+1; i++)           {               if (i==x)                   continue;               else                   cout<<b[i]<<   ;           }           cout<<endl;       }               }      int main()   {       fastio;       ll t=1;       cin>>t;       while (t-->0)       {           solve();       }          return 0;   }