Problem: You are given a number n and an array b_1, b_2, …, b_{n+2}, obtained according to the following algorithm: 

  * some array a_1, a_2, …, a_n was guessed; 
  * array a was written to array b, i.e. b_i = a_i (1 ≤ i ≤ n); 
  * The (n+1)-th element of the array b is the sum of the numbers in the array a, i.e. b_{n+1} = a_1+a_2+…+a_n; 
  * The (n+2)-th element of the array b was written some number x (1 ≤ x ≤ 10^9), i.e. b_{n+2} = x; The 
  * array b was shuffled. 



For example, the array b=[2, 3, 7, 12 ,2] it could be obtained in the following ways: 

  * a=[2, 2, 3] and x=12; 
  * a=[3, 2, 7] and x=2. 



For the given array b, find any array a that could have been guessed initially.

Input

The first line contains a single integer t (1 ≤ t ≤ 10^4). Then t test cases follow.

The first line of each test case contains a single integer n (1 ≤ n ≤ 2 ⋅ 10^5).

The second row of each test case contains n+2 integers b_1, b_2, …, b_{n+2} (1 ≤ b_i ≤ 10^9).

It is guaranteed that the sum of n over all test cases does not exceed 2 ⋅ 10^5.

Output

For each test case, output: 

  * "-1", if the array b could not be obtained from any array a; 
  * n integers a_1, a_2, …, a_n, otherwise. 



If there are several arrays of a, you can output any.

Example

Input


4
3
2 3 7 12 2
4
9 1 7 1 6 5
5
18 2 2 3 2 9 2
3
2 6 9 2 1


Output


2 3 7 
-1
2 2 2 3 9 
1 2 6 

Solution (in CPP):

Solution:
#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;
}