#include using namespace std; const int M=1e5+5; int n,a[3],t[7],T[3],ans; int NUM(int x){ if(x==12)return 0; if(x==21)return 1; if(x==102)return 2; if(x==120)return 3; if(x==201)return 4; if(x==210)return 5; } void Clear(){ memset(t,0,sizeof(t)); memset(T,0,sizeof(T)); ans=0; } void solve(){ Clear(); scanf("%d%d%d%d",&n,&a[0],&a[1],&a[2]); for(int i=1,x;i<=n;++i){ scanf("%d",&x); ++t[NUM(x)];++T[x/100]; } for(int i=0;i<3;++i){ ans+=min(T[i],a[i])*3; a[i]-=T[i]; } if(a[0]<0 && a[1]>=0 && a[2]>=0){ if(a[1]<=t[0] && a[2]<=t[1])ans+=a[1]*2+a[2]*2; if(a[1]<=t[0] && a[2]>t[1])ans+=a[1]*2+a[2]+t[1]; if(a[1]>t[0] && a[2]<=t[1])ans+=a[2]*2+a[1]+t[0]; if(a[1]>t[0] && a[2]>t[1])ans+=a[1]+t[0]+a[2]+t[1]; } if(a[0]>=0 && a[1]<0 && a[2]>=0){ if(a[0]<=t[2] && a[2]<=t[3])ans+=a[0]*2+a[2]*2; if(a[0]<=t[2] && a[2]>t[3])ans+=a[0]*2+a[2]+t[3]; if(a[0]>t[2] && a[2]<=t[3])ans+=a[2]*2+a[0]+t[2]; if(a[0]>t[2] && a[2]>t[3])ans+=a[0]+t[2]+a[2]+t[3]; } if(a[0]>=0 && a[1]>=0 && a[2]<0){ if(a[0]<=t[4] && a[1]<=t[5])ans+=a[0]*2+a[1]*2; if(a[0]<=t[4] && a[1]>t[5])ans+=a[0]*2+a[1]+t[5]; if(a[0]>t[4] && a[1]<=t[5])ans+=a[1]*2+a[0]+t[4]; if(a[0]>t[4] && a[1]>t[5])ans+=a[0]+t[4]+a[1]+t[5]; } if(a[0]>=0 && a[1]<0 && a[2]<0){ if(-a[1]<=t[2] && -a[2]<=t[4])ans+=-a[1]*2-a[2]*2; if(-a[1]<=t[2] && -a[2]>t[4])ans+=-a[1]*2-a[2]+t[4]; if(-a[1]>t[2] && -a[2]<=t[4])ans+=-a[2]*2-a[1]+t[2]; if(-a[1]>t[2] && -a[2]>t[4])ans+=-a[1]+t[2]-a[2]+t[4]; } if(a[0]<0 && a[1]>=0 && a[2]<0){ if(-a[0]<=t[0] && -a[2]<=t[5])ans+=-a[0]*2-a[2]*2; if(-a[0]<=t[0] && -a[2]>t[5])ans+=-a[0]*2-a[2]+t[5]; if(-a[0]>t[0] && -a[2]<=t[5])ans+=-a[2]*2-a[0]+t[0]; if(-a[0]>t[0] && -a[2]>t[5])ans+=-a[0]+t[0]-a[2]+t[5]; } if(a[0]<0 && a[1]<0 && a[2]>=0){ if(-a[0]<=t[1] && -a[1]<=t[3])ans+=-a[0]*2-a[1]*2; if(-a[0]<=t[1] && -a[1]>t[3])ans+=-a[0]*2-a[1]+t[3]; if(-a[0]>t[1] && -a[1]<=t[3])ans+=-a[1]*2-a[0]+t[1]; if(-a[0]>t[1] && -a[1]>t[3])ans+=-a[0]+t[1]-a[1]+t[3]; } printf("%d\n",ans); } int main(){ int t;scanf("%d",&t); for(;t;--t)solve(); return 0; }