#include using namespace std; #define rep(i,a,b) for (int i = a; i < b; i++) #define trav(a,b) for (auto a : b) #define all(x) begin(x),end(x) #define lld long long pair arr[1000000]; pair per[3]; int label[1000000]; lld sum[3]; vector ans[3]; int n; void printsol(){ rep(j,0,3)ans[j].clear(); rep(i,0,n){ ans[per[label[i]].second].push_back(arr[i].first); } cout<<"YES\n"; rep(j,0,3){ trav(a,ans[j])cout<>n>>na>>nb>>nc; rep(i,0,n){ cin>>arr[i].first; arr[i].second=i; } sort(arr,arr+n); per[0]={na,0}; per[1]={nb,1}; per[2]={nc,2}; sort(per,per+3); reverse(per,per+3); int cnt=0; rep(i,0,3){ sum[i]=0; rep(j,cnt,cnt+per[i].first){ sum[i]+=arr[j].first; label[j]=i; } cnt+=per[i].first; } lld tot=sum[0]+sum[1]+sum[2]; // cout<=tot){ cout<<"NO\n"; return; } // cout<=tot){ rep(j,0,per[1].first){ sum[0]-=arr[j].first; sum[0]+=arr[j+per[0].first].first; sum[1]+=arr[j].first; sum[1]-=arr[j+per[0].first].first; label[j]=1; label[j+per[0].first]=0; //cout<=tot){ cout<<"NO\n"; return; } if(2*sum[0]=tot){ int st=per[2].first-1; rep(i,st,st+per[1].first){ sum[0]-=arr[i].first; sum[0]+=arr[i+per[0].first].first; sum[1]-=arr[i+per[0].first].first; sum[1]+=arr[i].first; label[i]=1; label[i+per[0].first]=0; if(2*sum[1]> tt; while (tt--) Solve(); return 0; }