#include #define Max(a,b) ((ab)&&(a=b)) #define rep(i,a,b) for(int i=a,i##end=b;i<=i##end;++i) #define drep(i,a,b) for(int i=a,i##end=b;i>=i##end;--i) #define erep(i,a) for(int i=hd[a],y;(y=to[i]);i=nxt[i]) using namespace std; typedef long long ll; char C; inline int rd() { int res=0,f=1; while(C=getchar(),C<48||C>57)if(C=='-')f=0; do res=(res<<3)+(res<<1)+(C^48); while(C=getchar(),C>=48&&C<=57); if(f)return res; return -res; } int n,a,b,c,ans,cnt[10]; void dfs(int res){ if(!a&&!b&&!c){ Max(ans,res); return ; } if(a){ if(cnt[1]){ int t=min(a,cnt[1]); a-=t,cnt[1]-=t; dfs(res+t*3); a+=t,cnt[1]+=t; } if(cnt[2]){ int t=min(a,cnt[2]); a-=t,cnt[2]-=t; dfs(res+t*3); a+=t,cnt[2]+=t; } if(cnt[3]){ int t=min(a,cnt[3]); a-=t,cnt[3]-=t; dfs(res+t*2); a+=t,cnt[3]+=t; } if(cnt[4]){ int t=min(a,cnt[4]); a-=t,cnt[4]-=t; dfs(res+t); a+=t,cnt[4]+=t; } if(cnt[5]){ int t=min(a,cnt[5]); a-=t,cnt[5]-=t; dfs(res+t*2); a+=t,cnt[5]+=t; } if(cnt[6]){ int t=min(a,cnt[6]); a-=t,cnt[6]-=t; dfs(res+t); a+=t,cnt[6]+=t; } } if(b){ if(cnt[1]){ int t=min(b,cnt[1]); b-=t,cnt[1]-=t; dfs(res+t*2); b+=t,cnt[1]+=t; } if(cnt[2]){ int t=min(b,cnt[2]); b-=t,cnt[2]-=t; dfs(res+t); b+=t,cnt[2]+=t; } if(cnt[3]){ int t=min(b,cnt[3]); b-=t,cnt[3]-=t; dfs(res+t*3); b+=t,cnt[3]+=t; } if(cnt[4]){ int t=min(b,cnt[4]); b-=t,cnt[4]-=t; dfs(res+t*3); b+=t,cnt[4]+=t; } if(cnt[5]){ int t=min(b,cnt[5]); b-=t,cnt[5]-=t; dfs(res+t); b+=t,cnt[5]+=t; } if(cnt[6]){ int t=min(b,cnt[6]); b-=t,cnt[6]-=t; dfs(res+t*2); b+=t,cnt[6]+=t; } } if(c){ if(cnt[1]){ int t=min(c,cnt[1]); c-=t,cnt[1]-=t; dfs(res+t); c+=t,cnt[1]+=t; } if(cnt[2]){ int t=min(c,cnt[2]); c-=t,cnt[2]-=t; dfs(res+t*2); c+=t,cnt[2]+=t; } if(cnt[3]){ int t=min(c,cnt[3]); c-=t,cnt[3]-=t; dfs(res+t); c+=t,cnt[3]+=t; } if(cnt[4]){ int t=min(c,cnt[4]); c-=t,cnt[4]-=t; dfs(res+t*2); c+=t,cnt[4]+=t; } if(cnt[5]){ int t=min(c,cnt[5]); c-=t,cnt[5]-=t; dfs(res+t*3); c+=t,cnt[5]+=t; } if(cnt[6]){ int t=min(c,cnt[6]); c-=t,cnt[6]-=t; dfs(res+t*3); c+=t,cnt[6]+=t; } } } int main(){ int T=rd(); while(T--){ n=rd(),a=rd(),b=rd(),c=rd(); ans=0; memset(cnt,0,sizeof cnt); rep(i,1,n){ int t=rd(); if(t==12)cnt[1]++; if(t==21)cnt[2]++; if(t==102)cnt[3]++; if(t==120)cnt[4]++; if(t==201)cnt[5]++; if(t==210)cnt[6]++; } dfs(0); cout<