#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;
}