//没有剪枝的 Time Limit Exceeded
/*
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int MAXN = 25;
int sticks[MAXN];
bool visit[MAXN];
//int side,int m 不变 或者写为全局变量
bool DFS(int sum,int number,int side,int m){ //side边长 m 数值数目
if(number == 4) return true;
for(int i=0;i<m;++i){
if(visit[i] || sum+sticks[i] > side ) continue;
visit[i] = true;
if(sum + sticks[i] == side){
if(DFS(0,number+1,side,m)){
return true;
}
}else{
if(DFS(sum+sticks[i],number,side,m)){
return true;
}
}
visit[i] = false;//todo 这一点从初试的时候就没搞明白
}
return false;
}
int main(){
int n;
scanf("%d",&n);
while(n--){
int m;
scanf("%d",&m);
int length = 0;
for(int i=0;i<m;++i){
scanf("%d",&sticks[i]);
length += sticks[i];
}
int side = length / 4; //若初不进呢? 里面BFS会有处理么
memset(visit,false,sizeof(visit));
if(DFS(0,0,side,m)){
printf("yes\n");
}else{
printf("no\n");
}
}
return 0;
}
*/
//剪枝的 Accepted Square DFS P149 todo
//http://poj.org/problem?id=2362
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int MAXN = 25;
int sticks[MAXN];
bool visit[MAXN];
//int side,int m 不变 或者写为全局变量
bool DFS(int sum,int number,int position,int side,int m){ //side边长 m 数值数目
if(number == 3) return true;
int sample = 0;
for(int i=position;i<m;++i){
if(visit[i] || sum+sticks[i] > side ||sticks[i] == sample) continue;
visit[i] = true;
if(sum + sticks[i] == side){
if(DFS(0,number+1,0,side,m)){
return true;
}else{
sample = sticks[i];
}
}else{
if(DFS(sum+sticks[i],number,i+1,side,m)){
return true;
}else{
sample = sticks[i];
}
}
visit[i] = false;//todo 这一点从初试的时候就没搞明白
}
return false;
}
bool Compare(int x,int y){
return x>y;
}
int main(){
int n;
scanf("%d",&n);
while(n--){
int m;
scanf("%d",&m);
int length = 0;
for(int i=0;i<m;++i){
scanf("%d",&sticks[i]);
length += sticks[i];
}
if(length % 4!=0) {
printf("no\n");
continue;
}
int side = length / 4;
memset(visit,false,sizeof(visit));
sort(sticks,sticks+m,Compare);
if(sticks[0]>side) {
printf("no\n");
continue;
}
if(DFS(0,0,0,side,m)){
printf("yes\n");
}else{
printf("no\n");
}
}
return 0;
}