#include <bits/stdc++.h> using namespace std; using ll = long long; long long readInt(long long l,long long r,char endd){ long long x=0; int cnt=0; int fi=-1; bool is_neg=false; while(true){ char g=getchar(); if(g=='-'){ assert(fi==-1); is_neg=true; continue; } if('0'<=g && g<='9'){ x*=10; x+=g-'0'; if(cnt==0){ fi=g-'0'; } cnt++; assert(fi!=0 || cnt==1); assert(fi!=0 || is_neg==false); assert(!(cnt>19 || ( cnt==19 && fi>1) )); } else if(g==endd){ if(is_neg){ x= -x; } assert(l<=x && x<=r); return x; } else { assert(false); } } } string readString(int l,int r,char endd){ string ret=""; int cnt=0; while(true){ char g=getchar(); assert(g!=-1); if(g==endd){ break; } cnt++; ret+=g; } assert(l<=cnt && cnt<=r); return ret; } long long readIntSp(long long l,long long r){ return readInt(l,r,' '); } long long readIntLn(long long l,long long r){ return readInt(l,r,'\n'); } string readStringLn(int l,int r){ return readString(l,r,'\n'); } string readStringSp(int l,int r){ return readString(l,r,' '); } long long P10(int x){ return x == 0 ? 1 : 10 * P10(x - 1); } template <typename T, typename R = long long> vector<T> readArr(int len, R l, R r){ vector<T> a(len); for(int i = 0; i < len; i++){ if(i + 1 < len){ a[i] = readIntSp(l, r); } else { a[i] = readIntLn(l, r); } } return a; } int main(){ int t = readIntLn(1, P10(5)); int sum_n = 0; while(t--){ int n = readIntLn(1, 5 * P10(5)); sum_n += n; auto A = readArr<int>(n, 1ll, P10(9)); auto B = readArr<int>(n, 1ll, P10(9)); auto C = readArr<int>(n, 1ll, P10(9)); int k1 = readIntSp(0, n); int k2 = readIntLn(0, n); ll ans = 0; vector<pair<ll, ll>> p; for(int i = 0; i < n; i++){ ans += C[i]; p.push_back({A[i] - C[i], B[i] - C[i]}); } sort(p.begin(), p.end(), [&](auto a, auto b){ return a.first - a.second > b.first - b.second; }); vector<ll> pref(n + 1), suff(n + 1); priority_queue<ll, vector<ll>, greater<ll>> pq; ll sum = 0; for(int i = 0; i < n; i++){ if(p[i].first > 0){ pq.push(p[i].first); sum += p[i].first; } if(pq.size() > k1){ sum -= pq.top(); pq.pop(); } pref[i + 1] = sum; } sum = 0; while(!pq.empty()) pq.pop(); for(int i = n - 1; i >= 0; i--){ if(p[i].second > 0){ pq.push(p[i].second); sum += p[i].second; } if(pq.size() > k2){ sum -= pq.top(); pq.pop(); } suff[i] = sum; } ll add = 0; for(int i = 0; i <= n; i++){ add = max(add, pref[i] + suff[i]); } cout << ans + add << '\n'; } assert(1 <= sum_n && sum_n <= 5 * P10(5)); return 0; }