#include using namespace std; typedef vector vi; typedef pair ii; typedef long long ll; typedef pair l4; typedef vector vll; typedef double db; typedef vector vdb; typedef pair dd; typedef set si; typedef set sll; #define fi first #define se second #define matrix(a) vector< vector > #define sz(a) int((a).size()) #define lop(i,a,b) for (int i=a; i<=b; i++) #define rlop(i,a,b) for (int i=b; i>=a; i--) #define all(s) (s).begin(),(s).end() #define pb push_back #define enter cout<<'\n' #define lb(i,v) int(lower_bound(all(v),i)-v.begin()) #define ub(i,v) int(upper_bound(all(v),i)-v.begin()) int main() { int n; cin >> n; vll p(n); for(int p_i = 0; p_i < n; p_i++){ cin >> p[p_i]; } vll x(n); for(int x_i = 0; x_i < n; x_i++){ cin >> x[x_i]; } int m; cin >> m; vll y(m); for(int y_i = 0; y_i < m; y_i++){ cin >> y[y_i]; } vll r(m); for(int r_i = 0; r_i < m; r_i++){ cin >> r[r_i]; } sll s; lop(i,0,m-1){ s.insert(max(y[i]-r[i],1LL*0)); s.insert(y[i]+r[i]); } lop(i,0,n-1)s.insert(x[i]); vll pos; for(auto i:s)pos.pb(i); s.clear(); map id; lop(i,0,sz(pos)-1)id[pos[i]]=i; matrix(int) clouds(sz(pos)),city(sz(pos)); lop(i,0,m-1){ clouds[id[max(y[i]-r[i],1LL*0)]].pb(i); clouds[id[y[i]+r[i]]].pb(i); } lop(i,0,n-1)city[id[x[i]]].pb(i); si active; vll gain(m,0); ll sunny=0; lop(i,0,sz(pos)-1){ lop(j,0,sz(clouds[i])-1){ if(pos[i]==max(y[clouds[i][j]]-r[clouds[i][j]],1LL*0))active.insert(clouds[i][j]); } lop(j,0,sz(city[i])-1){ if(sz(active)==1)gain[*active.begin()]+=p[city[i][j]]; else if(!sz(active))sunny+=p[city[i][j]]; } lop(j,0,sz(clouds[i])-1){ if(pos[i]==y[clouds[i][j]]+r[clouds[i][j]])active.erase(clouds[i][j]); } } ll ans=-1; lop(i,0,m-1)ans=max(ans,gain[i]); cout<