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>
#define all(s)                       (s).begin(),(s).end()
#define des(s)                       sort(s.rbegin(),s.rend())
#define pb(x)                        push_back({x})//consider using emplace_back
#define mp(x,y)                      make_pair(x,y)
#define rev(v)                       reverse(v.begin(), v.end())
#define precision(x,p)               fixed<<setprecision(p)<<x
typedef  long long int               ll;
typedef unsigned long long int       ull;
typedef long double                  ld;
#define nl                           '\n'
#define vec                          vector<ll>
#define pari                         pair<ll,ll>
#define loop(i,n)                      for(ll i=0;i<n;i++)
#define loopk(i,k,n)                    for(ll i=k;i<n;i++)
#define read(v,n)                    for(ll i=0;i<n;i++) {ll val; cin>>val; v.pb(val);}
#define print(ar)                  { for(auto x:ar) cout<<x<<" ";cout<<endl;}
#define add_edge(adj,a,b)            { adj[a].pb(b); }
#define add_wedge(adj,a,b,w)         { adj[a].pb({b,w}); adj[b].pb({a,w});}
#define mod                          1000000007
#define inf                          1e18
#define ninf                         -1e18
using namespace std;

struct node
{
  int sz,x,y;
};


int  main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
ll t=1;
cin>>t;

while(t--)
    {
    

      ll n;
      cin>>n;
      vec v;
      ll k=2*n;
      
      read(v,k);
      des(v);
      // print(v);
      ll prev=0;
      ll flag=1;
      ll j=n;
      map<ll,ll>mp;
      for(auto x:v)
      mp[x]++;
      for(auto x:v)
      {
        if(mp[x]%2==1||mp[x]!=2)
          flag=0;
      }
      for(ll i=0;i<2*n;i+=2 )
      {
      //  cout<<v[i]<<": ";
        
        if(v[i]%2==0)
        {
            v[i]/=2;
            if(v[i]>prev)
            {
              v[i]-=prev;
              if(v[i]%j==0)
              {
                prev+=v[i]/j;
              }
              else{
                flag=0;
                break;
              }
            }
            else{
              flag=0;
              break;
            }
        }
        else{
          flag=0;
          break;
        }
        // cout<<prev<<" ";
        // cout<<j<<": ";
        j--;


      }
      if(flag)
      cout<<"YES"<<endl;
      else
      cout<<"NO"<<endl;
        

    }
}