#include #define rep(i,a,b) for(int i=a;i < b;i++) #define rrep(i,a,b) for(int i=b ; i > a ; i--) #define pb push_back #define mp make_pair #define F first #define S second #define endl '\n' #define check1(a) cerr << a << endl #define check2(a,b) cerr << a << "|" << b << endl using namespace std; typedef long long ll; typedef long double ld; typedef vector vi; /*----------------------------------------------*/ ll arr[100010],pop[100010],cl[100010],ran[100010]; int main() { int n,ma; map m,m1; cin >> n; rep(i,0,n)cin >> pop[i]; rep(i,0,n)cin >> arr[i]; m.insert(mp(0,0)); m.insert(mp(arr[0],pop[0])); rep(i,1,n)m.insert(mp(arr[i],m.rbegin()->S+pop[i])); rep(i,0,n)m1.insert(mp(arr[i],pop[i])); cin >> ma; rep(i,0,ma)cin >> cl[i]; rep(i,0,ma)cin >> ran[i]; ll ans = 0; rep(i,0,ma){ ll a = m.lower_bound(cl[i]+ran[i])->S; ll b = m.lower_bound(cl[i]-ran[i]-1)->S; auto it = m1.lower_bound(cl[i]+ran[i]); auto it1 = m1.upper_bound(cl[i]-ran[i]); m1.erase(it1,it); ans = max(ans,a-b); } for(auto i : m1){ ans += i.S;} cout << ans ; return 0; }