#include #define lsb(x) (x & (-x)) #define ll long long // 102 using namespace std; const int MAXN = (int) 2e5 + 5; pair town[MAXN + 1]; int p[MAXN + 1]; int sp[MAXN + 1]; ll sp1[MAXN + 1]; int y[MAXN + 1], r[MAXN + 1]; int main() { //ifstream cin("A.in"); //ofstream cout("A.out"); int n, m, i; ios::sync_with_stdio(false); cin >> n; for(i = 1; i <= n; i++) { cin >> p[i]; } for(i = 1; i <= n; i++) { cin >> town[i].first; town[i].second = i; } sort(town + 1, town + n + 1); cin >> m; for(i = 1; i <= m; i++) { cin >> y[i]; } for(i = 1; i <= m; i++) { cin >> r[i]; int rez1 = 0, rez2 = 0; for(int pas = 1 << 17; pas; pas >>= 1) { if(rez1 + pas <= n && y[i] - r[i] > town[rez1 + pas].first) rez1 += pas; if(rez2 + pas <= n && y[i] + r[i] >= town[rez2 + pas].first) rez2 += pas; } rez1++; if(rez1 <= rez2) { sp[rez1]++; sp[rez2 + 1]--; } } ll sum = 0; for(i = 1; i <= n; i++) { sp[i] += sp[i - 1]; sp1[i] = sp1[i - 1] + (sp[i] == 1) * p[town[i].second]; if(sp[i] == 0) sum += p[town[i].second]; } ll ans = sum; for(i = 1; i <= m; i++) { int rez1 = 0, rez2 = 0; for(int pas = 1 << 17; pas; pas >>= 1) { if(rez1 + pas <= n && y[i] - r[i] > town[rez1 + pas].first) rez1 += pas; if(rez2 + pas <= n && y[i] + r[i] >= town[rez2 + pas].first) rez2 += pas; } rez1++; if(rez1 <= rez2) { //printf("%d %d %lld\n" ,rez1,rez2,sum); ans = max(ans, sum + sp1[rez2] - sp1[rez1 - 1]); } } cout << ans; //cin.close(); //cout.close(); return 0; }