#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;i>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/4) { 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<