Long time ago there was a symmetric array a_1,a_2,…,a_{2n} consisting of 2n distinct integers. Array a_1,a_2,…,a_{2n} is called symmetric if for each integer 1 ≤ i ≤ 2n, there exists an integer 1 ≤ j ≤ 2n such that a_i = -a_j.

For each integer 1 ≤ i ≤ 2n, Nezzar wrote down an integer d_i equal to the sum of absolute differences from a_i to all integers in a, i. e. d_i = ∑_{j = 1}^{2n} {|a_i - a_j|}.

Now a million years has passed and Nezzar can barely remember the array d and totally forget a. Nezzar wonders if there exists any symmetric array a consisting of 2n distinct integers that generates the array d.

Input

The first line contains a single integer t (1 ≤ t ≤ 10^5) — the number of test cases. 

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

The second line of each test case contains 2n integers d_1, d_2, …, d_{2n} (0 ≤ d_i ≤ 10^{12}).

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

Output

For each test case, print "YES" in a single line if there exists a possible array a. Otherwise, print "NO".

You can print letters in any case (upper or lower).

Example

Input


6
2
8 12 8 12
2
7 7 9 11
2
7 11 7 11
1
1 1
4
40 56 48 40 80 56 80 48
6
240 154 210 162 174 154 186 240 174 186 162 210


Output


YES
NO
NO
NO
NO
YES

Note

In the first test case, a=[1,-3,-1,3] is one possible symmetric array that generates the array d=[8,12,8,12].

In the second test case, it can be shown that there is no symmetric array consisting of distinct integers that can generate array d.
#include <bits/stdc++.h>
#include<unordered_map>
#include <string> 
using namespace std;
#define ll long long
#define int long long
#define lmin -9223372036854775808
#define lmax 9223372036854775807
#define imax INT_MAX
#define imin INT_MIN
#define ffor(i,a,b) for(int i=a;i<b;i++)
#define bfor(i,a,b) for(int i=a-1;i>=b;i--)
#define pb push_back
#define mset(f,a) memset(f,a,sizeof(f))
#define MAXN   10000001
#define mp make_pair
#define double long double
#define pii(x,y) pair<x,y>
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define all(x) x.begin(),x.end()
#define allr(x) x.rbegin(),x.rend()
#define sz(x) (ll)x.size()
#define ff first
#define ss second
#define lb lower_bound
#define ub upper_bound
#define bs binary_search
#define vec(x) vector<x > 
#define set(x) set<x > 
#define mulset(x) multiset<x >
#define umap(x,y) unordered_map<x,y>
#define map(x,y) map<x,y>
#define bb begin()
#define ee end()
#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL);

ll M=1e9+7;

ll sp[MAXN];
// unordered_map<ll,pair<ll,pair<ll,ll> > >mpp;
// ll p[MAXN];
// ll fact[200005];

ll gcd(ll a, ll b)
{
    if (b == 0)
        return a;
    return gcd(b, a % b);
      
}

ll max(ll x,ll y)
{
    if(x>y)
        return x;
    
    return y;
}
ll power(ll x ,ll y)
{
    if(y==0)
        return 1;
    
    ll t=power(x, y/2);
    
    t=((t%M)*(t%M))%M;
    
    if(y%2==1)
        t=((t%M)*(x%M))%M;
    
    return t;
    
}

ll min(ll x, ll y)
{
    if(x<y)
        return x;
    
    return y;
}


// // bool comp(pair<ll,ll>p1, pair<ll,ll>p2)
// // {
// //     if(p1.second<p2.second)
// //         return true;
// //     else if(p1.second==p2.second)
// //     {
// //         return p1.first<=p2.first;
// //     }
// //     else
// //     {
// //         return false;
// //     }
    
// // }

// ll getgcdUtil(vec(ll)&a, ll* st,ll l, ll r, ll lq, ll rq, ll i)
// {
//     if(r<lq || l>rq)
//         return lmax;
    
//     if(lq<=l && r<=rq)
//         return st[i];
    
    
//     ll mid=(l+r)/2;

//     ll d55=getgcdUtil(a,st,l,mid,lq,rq,2*i+1);
//     ll d2=getgcdUtil(a,st,mid+1,r,lq,rq,2*i+2);

//     return min(d55,d2);
// }
// ll getgcd(vec(ll)& a, ll n, ll *st,ll lq, ll rq)
// {
//     if(lq>rq)
//         return lmax;
    
//     return getgcdUtil(a,st,0,n-1,lq,rq,0);
// }

ll updateUtil(vec(ll)&a, ll*st, ll l ,ll r, ll ind, ll i)
{

    if(l>ind || r<ind)
        return st[i];
    
    if(l==r)
    {
        st[i]=a[l];
        return st[i];
    }

    ll mid=(l+r)/2;

    updateUtil(a,st,l,mid,ind,2*i+1);
    updateUtil(a,st,mid+1,r,ind,2*i+2);

    st[i]=gcd(st[2*i+1],st[2*i+2]);

    return st[i];

}

ll update(vec(ll)& a, ll n, ll *st, ll ind)
{
    return updateUtil(a,st,0,n-1,ind,0);
}

void constructUtil(vec(ll)& a, ll*st, ll l, ll r, ll i)
{
    if(l==r)
    {
        st[i]=1;
        return;
    }

    ll mid=(l+r)/2;

    constructUtil(a,st,l,mid,2*i+1);
    constructUtil(a,st,mid+1,r,2*i+2);

    st[i]=gcd(st[2*i+1],st[2*i+2]);

    return;
}

ll* construct(vec(ll)& a, ll n)
{
    ll d=log2(n)+1;
    ll x=power(2,d+1); 

    ll *st=new ll[x+1];

    constructUtil(a,st,0,n-1,0);

    return st;
}

void siev() 
{ 
    sp[1] = 0; 
    for (ll i=2; i<MAXN; i++) 
        sp[i] = i; 
  
    for (ll i=4; i<MAXN; i+=2) 
        sp[i] = 2; 
  
    for (ll i=3; i*i<MAXN; i++) 
    { 
        if (sp[i] == i) 
        { 
            // marking SPF for all numbers divisible by i 
            for (int j=i*i; j<MAXN; j+=i) 
  
                if (sp[j]==j) 
                    sp[j] = i; 
        } 
    } 

    
} 

vec(ll) getFactorization(ll x) 
{ 
    vec(ll) ret; 

    while (x != 1) 
    { 
        ret.pb(sp[x]); 
        x = x / sp[x]; 
    } 
    return ret; 
} 

bool dfs(vector<ll>tree[], ll s,ll p , map(pii(ll,ll),ll)&cnt, ll n)
{
    
    
    ll i;

    ll c=0;

    for(i=0;i<tree[s].size();i++)
    {
        if(tree[s][i]!=p)
        {
            
            ll f=dfs(tree,tree[s][i],s,cnt,n);
            cnt[mp(s,tree[s][i])]=f;
            cnt[mp(tree[s][i],s)]=n-f;

            c+=f;
        }
    }

    return c;
}


// ll ncr[1001][1001];





// ll logfind10(ll x)
// {
//     ll i;
//     ll l=0;

//     ll an=-1;
    
//     for(i=1;;i=i*10)
//     {
//         if(i<=x)
//         {
//             an=l;
//         }
//         else
//             break;
//         l++;
//     }

//     return an;
// }


// ll prCnt[MAXN];


ll fact[300001];
ll fibo[300001];


ll ncr(ll n, ll r)
{
    if(n<r)
        return 0;
    
    ll d=fact[n];
    d=((d%M)*(power(fact[r],M-2)%M))%M;
    d=((d%M)*(power(fact[n-r],M-2)%M))%M;

    return d;
}

ll p[70];
vec(ll)dpp;
void output(ll t)
{   
    fastio;
    
    ll n;
    cin>>n;

    n=n*2;

    ll a[n],i;

    for(i=0;i<n;i++)
        cin>>a[i];
    
    map(ll,ll)mpp;

    for(i=0;i<n;i++)
        mpp[abs(a[i])]++;
    
    for(auto it=mpp.begin();it!=mpp.end();it++)
    {
        if(it->second!=2)
        {
            cout<<"NO\n";
            return;
        }
    }

    sort(a,a+n);

    ll s=0;

    for(i=n-1;i>=0;i-=2)
    {

        
        ll z=a[i]-s;

        if(z%(i+1)==0)
        {
            z=z/(i+1);
            
            if(z<=0)
            {
                cout<<"NO\n";
                return;
            }

            s+=z;
            s+=z;
        }
        else
        {
            cout<<"NO\n";
            return;
        }
        
    }

    cout<<"YES\n";
}   



signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
   #ifndef ONLINE_JUDGE
    

    freopen("input.txt", "r", stdin);
    // for writing output to output.txt
    freopen("output.txt", "w", stdout);
    #endif 
    

    fastio
    ll i;
    // siev();
    
    // dpp.pb(2050);

    // for(i=1;;i++)
    // {
    //     dpp.pb(dpp.back()*10);

    //     if(dpp.back()>1e18)
    //         break;
    // }

    
    // cout<<v.size()<<endl;
    // p[0]=1;

    // for(ll i=1;i<70;i++)
    //     p[i]=p[i-1]*2;
    
    // ncr[0][0]=1;

    // prCnt[0]=0;

     

    // for(ll i=1;i<MAXN;i++)
    // {

    //     prCnt[i]=prCnt[i-1]+(sp[i]==i);
    // }

    

    // for (ll i = 1; i < 1001; i++) { 
        
    //     ncr[i][0] = 1; 
    //     for (ll j = 1; j < i + 1; j++) { 
  
    //         // Value for the current cell of Pascal's triangle 
    //         ncr[i][j] = (ncr[i - 1][j - 1]%M + ncr[i - 1][j]%M)%M; 
    //     } 
    // } 
    // cout<<ncr[5][2]<<endl;
    ll t;
    t=1;
    cin>>t;
    // cout<<"A\n";
     

    // fact[0]=1;
               
    // for(i=1;i<=300000;i++)
    //     fact[i]=((fact[i-1]%M)*(i%M))%M;

    // cout<<fact[100000]<<endl;
    // cout<<ncr(5,2)<<endl;
    // cout<<sp[6]<<endl;
    

    while(t>0)
    {
        output(t);
        t--;
        
    }
}