← Home
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,a[200005],cnt[3],num[3],ans[200005][3];
ll pre[200005],sm[3],Sm;
void solve(){
	sm[0]=sm[1]=sm[2]=num[0]=num[1]=num[2]=Sm=0;
	cin>>n>>cnt[0]>>cnt[1]>>cnt[2];
	for(int i=1;i<=n;i++)cin>>a[i],Sm+=a[i];
	Sm=(Sm-1)/2;
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++)pre[i]=pre[i-1]+a[i];
	for(int i=0;i<3;i++)
		if(pre[cnt[i]]>Sm){
			cout<<"NO\n";
			return;
		}
	bool flg=0;
	for(int i=0;i<3;i++)
		if(pre[cnt[i]-1]+a[n]<=Sm)flg=1;
	if(!flg){
		cout<<"NO\n";
		return;
	} 
	for(int i=n;i>=1;i--){
		int id=-1;
		for(int j=0;j<3;j++)
			if(num[j]!=cnt[j])
				if(sm[j]+a[i]+pre[cnt[j]-num[j]-1]<=Sm){
					flg=(i==1);
					for(int k=0;k<3;k++)
						if(num[k]+(j==k)!=cnt[k])
							if(sm[k]+a[i]*(j==k)+a[i-1]+pre[cnt[k]-num[k]-(j==k)-1]<=Sm)flg=1;
					if(flg)id=j;
				}
		if(id==-1){
			cout<<"NO"<<i<<"\n";
			return;
		}
		ans[++num[id]][id]=a[i];
		sm[id]+=a[i];
	}
	cout<<"YES\n";
	for(int i=0;i<3;i++){
		for(int j=1;j<=cnt[i];j++)cout<<ans[j][i]<<" ";
		cout<<'\n';
	}
}
int main(){
	ios::sync_with_stdio(0),cin.tie(0);
	int T;cin>>T;while(T--)solve();
	return 0;
}