#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;
const int MAXN = 25;
int side;
int m;
int sticks[MAXN];
bool visit[MAXN];
bool cmp(int a, int b){
return a > b;
}
bool DFS(int sum, int num, int position){
if(num == 3){
return true;
}else{
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, num + 1, 0)){
return true;
}else{
sample = sticks[i]; //记录失败棍子长度
}
}else{
if(DFS(sum+sticks[i], num, i+1)){
return true;
}else{
sample = sticks[i]; //记录失败棍子长度
}
}
visit[i] = false; //取消标记
}
return false;
}
}
int main(){
int n, length;
cin >> n;
while(n--){
cin >> m;
length = 0;
for(int i = 0; i < m; i++){
cin >> sticks[i];
length += sticks[i];
}
memset(visit, false, sizeof(visit));
if(length % 4 != 0){ //剪枝
printf("no\n");
continue;
}
sort(sticks, sticks + m, cmp);
side = length / 4;
if(sticks[0] > side){ //剪枝
printf("no\n");
continue;
}
if(DFS(0, 0, 0)){
printf("yes\n");
}else{
printf("no\n");
}
}
return 0;
}