#include using namespace std; #define ll long long const int N=200050; ll x[N],pref[N],suff[N]; vector Split(int &l,int &r,int sz,ll S){ pref[l-1]=0; for(int i=l;i<=r;i++)pref[i]=pref[i-1]+x[i]; suff[r+1]=0; for(int i=r;i>=l;i--)suff[i]=suff[i+1]+x[i]; int good=sz; for(int take=0;take<=sz;take++){ if((pref[l+take-1]+suff[r-sz+take+1])*2 ans; for(int i=l;i<=l+good-1;i++)ans.push_back(x[i]); for(int i=r-sz+good+1;i<=r;i++)ans.push_back(x[i]); l+=good; r-=sz-good; return ans; } int main(){ int t; scanf("%i",&t); while(t--){ int n; int sz[3]; scanf("%i %i %i %i",&n,&sz[0],&sz[1],&sz[2]); int ids[3]={0,1,2}; sort(ids,ids+3,[&](int i,int j){return sz[i] ans[3]; for(int i=0;i<3;i++){ ans[ids[i]]=Split(l,r,sz[ids[i]],S); } ll mx=0; for(int i=0;i<3;i++){ ll now=0; for(ll x:ans[i])now+=x; mx=max(mx,now); } if(mx*2>=S)printf("NO\n"); else{ printf("YES\n"); for(int i=0;i<3;i++){ for(ll x:ans[i])printf("%lld ",x); printf("\n"); } } } return 0; }