#include using namespace std; typedef long long ll; typedef pair pii; #define fi first #define se second #define mp make_pair #define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); vector x; ll get(int l, int r){ if(l > r) return 0ll; ll s = x[r]; if(l > 0) s -= x[l - 1]; return s; } void solve(){ int n; cin >> n; vector nn(3); cin >> nn[0].fi >> nn[1].fi >> nn[2].fi; nn[0].se = 1; nn[1].se = 2; nn[2].se = 3; vector cur(3); sort(nn.begin(), nn.end()); x.clear(); x.resize(n); ll total = 0; for(int i = 0 ; i < n; i ++ ){ cin >> x[i]; total += x[i]; } sort(x.begin(), x.end()); for(auto &f : x){ f *= 2ll; } for(int i = 1; i < n; i ++ ){ x[i] += x[i - 1]; } int l = 0; int r = n - 1; vector A[3]; for(int i = 0 ; i < 3; i ++ ){ while(nn[i].fi >= 1){ if(cur[i] + get(r,r) + get(l,l+nn[0].fi-2) < total){ cur[i] += get(r,r); A[i].push_back(r); r -- ; } else{ cur[i] += get(l,l); A[i].push_back(l); if(cur[i] >= total){ cout << "NO\n"; return; } l++; } nn[i].fi -- ; } } cout << "YES\n"; for(int v = 1; v <= 3; v ++ ){ for(int z = 0; z < 3; z ++ ){ if(nn[z].se == v){ for(auto p : A[z]){ cout << get(p,p) / 2ll << " "; } } } cout << "\n"; } } int main(){ fastIO; int tc; cin >> tc; for(int iq = 1; iq <= tc; iq ++ ){ solve(); } return 0; }