/*这个题的简单比较容易想到。在两个剪枝的情况下。
进行DFS。三个参数分别是num表示目前已经组成的边数,
len为当前的边的边长,s为枚举木棒的起点。
边枚举的顺序从大到小。*/
#include <stdio.h>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int n,size;
bool vis[21];
int a[21];
bool dfs(int num,int len,int s)
{
if(num==3)
return true;
for(int i=s; i<n; i++)
{
if(vis[i]) continue;
vis[i]=true;
if(len+a[i]<size)
{
if(dfs(num,len+a[i],i+1))
return true;
}
if(len+a[i]==size)
{
if(dfs(num+1,0,0))
return true;
}
vis[i]=false;
}
return false;
}
bool cmp(int x,int y)
{
return x>y;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int sum=0;
scanf("%d",&n);
memset(vis,false,sizeof(vis));
for(int i=0; i<n; i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
sort(a,a+n,cmp);
size=sum/4;
if(sum%4!=0||size<a[0])
{
printf("no\n");
continue;
}
if(dfs(0,0,0))
printf("yes\n");
else printf("no\n");
}
return 0;
}