#include using namespace std; int na,nb,nc,n; int sorta[200005]; long long pre[200005]; vector big; vector small; int bigSize; long long ta=0,tb=0,tc=0; int ca=0,cb=0,cc=0; vector A,B,C; bool foundans=false; void trySolve(vector &AA, vector &BB, vector &CC, long long va, long long vb, long long vc, int ka, int kb, int kc, int Na, int Nb, int Nc) { int needa=Na-ka; int needb=Nb-kb; int needc=Nc-kc; if (needa<0 || needb<0 || needc<0) return; if (va+vb+pre[needa+needb] <= vc+pre[needa+needb+needc]-pre[needa+needb]) return; foundans=true; vector idec; int pp=0; for (int i=needa+needb+1;i<=needa+needb+needc;i++) idec.push_back(i); long long levi=va+vb+pre[needa+needb]; long long desni=vc+pre[needa+needb+needc]-pre[needa+needb]; while (true) { while (pp ima(needa+needb+needc+1,true); ima[0]=false; for (auto it : idec) ima[it]=false; levi=va; desni=vb; vector ideab; for (int i=1;i<=needa+needb+needc;i++) if (ima[i]) ideab.push_back(i); vector ideb; for (int i=needa;i5'500'000) { cout<<"napusi mi se kurca\n"; return; } if (foundans) return; if (i==bigSize) { //govno od zadatka if (ta<=tb && ta<=tc && tb<=tc) trySolve(A,B,C,ta,tb,tc,ca,cb,cc,na,nb,nc); else if (ta<=tb && ta<=tc && tc<=tb) trySolve(A,C,B,ta,tc,tb,ca,cc,cb,na,nc,nb); else if (tb<=ta && tb<=tc && ta<=tc) trySolve(B,A,C,tb,ta,tc,cb,ca,cc,nb,na,nc); else if (tb<=ta && tb<=tc && tc<=ta) trySolve(B,C,A,tb,tc,ta,cb,cc,ca,nb,nc,na); else if (tc<=ta && tc<=tb && ta<=tb) trySolve(C,A,B,tc,ta,tb,cc,ca,cb,nc,na,nb); else trySolve(C,B,A,tc,tb,ta,cc,cb,ca,nc,nb,na); return; } ta+=big[i]; ca++; A.push_back(big[i]); rekurcina(i+1); if (foundans) return; A.pop_back(); ta-=big[i]; ca--; tb+=big[i]; cb++; B.push_back(big[i]); rekurcina(i+1); if (foundans) return; B.pop_back(); tb-=big[i]; cb--; tc+=big[i]; cc++; C.push_back(big[i]); rekurcina(i+1); if (foundans) return; C.pop_back(); tc-=big[i]; cc--; } int main() { ios::sync_with_stdio(false); cin.tie(0); int t; cin>>t; while (t--) { A.clear(),B.clear(),C.clear(); ta=0,tb=0,tc=0; ca=0,cb=0,cc=0; foundans=false; big.clear(); small.clear(); cin>>n>>na>>nb>>nc; vector x(n); for (int i=0;i>x[i]; long long s=0; for (auto it : x) s+=it; for (auto it : x) if (it>=s/12) { big.push_back(it); } else { small.push_back(it); } int m=(int)small.size(); for (int i=1;i<=m;i++) sorta[i]=small[i-1]; sort(sorta+1,sorta+m+1); reverse(sorta+1,sorta+m+1); for (int i=1;i<=m;i++) pre[i]=pre[i-1]+sorta[i]; bigSize=(int)big.size(); rekurcina(0); if (!foundans) { cout<<"NO\n"; continue; } //cout<<"KAKO?! "; //for (int i=1;i<=m;i++) cout<