#include<iostream>
using namespace std;
#include<algorithm>
int average;
bool visited[150];
int cases,num;
int a[150];
int sum;
bool cmp(int a,int b)//比较函数,从小到大 ,一维数组不用*a
{
return a>b;
}
int couside;
int dfs(int start,int side,int len)
{//起始位置,变得数量,拼凑边的量
if(len==average)
{
start=0;
side++;
len=0;
}
if(side==4)
return 1;
for(int i=start;i<num;i++)
{
if(!visited[i])
continue;
if(a[i]>average-len)
continue;
visited[i]=false;
if(dfs(i+1,side,len+a[i]))//这里强调要调回i+1,调回start+1就会超时
return 1;
visited[i]=true;
}
return 0;
}
int main()
{
cin>>cases;
while(cases--)
{
sum=0;
memset(visited,true,sizeof(visited));
average=0;
cin>>num;
for(int i=0;i<num;i++)
{
cin>>a[i];
average+=a[i];
}
sort(a,a+num,cmp);
if(average%4!=0)
{
cout<<"no"<<endl;
continue;
}
else
average=average/4;
if(dfs(0,0,0))
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
system("pause");
return 0;
}