#include using namespace std; int binarySearch(long arr[], int l, int r, long x) { if (r >= l) { int mid = l + (r - l)/2; if (arr[mid] == x) return mid; if (arr[mid] > x) return binarySearch(arr, l, mid-1, x); return binarySearch(arr, mid+1, r, x); } return -1; } long maximumPeople(long p[], long x[], long y[], long r[], int n, int m) { // Return the maximum number of people that will be in a sunny town after removing exactly one cloud. long arr[2*m]; int j=0; long max = 0,ans=0; for(int i=0;i<2*m;i++) { arr[i]=y[j]+r[j]; arr[i+1]=y[j]-r[j]; j++; i++; } for(int i=0;i=arr[k] && x[i]<=arr[k+1] && p[i]>max) { max=p[i]; k+=2; flag=1; break; } } if(flag==0) ans+=p[i]; } ans+=max; return ans; } int main() { int n; cin >> n; long p[n]; for(int p_i = 0; p_i < n; p_i++){ cin >> p[p_i]; } long x[n]; for(int x_i = 0; x_i < n; x_i++){ cin >> x[x_i]; } int m; cin >> m; long y[m]; for(int y_i = 0; y_i < m; y_i++){ cin >> y[y_i]; } long r[m]; for(int r_i = 0; r_i < m; r_i++){ cin >> r[r_i]; } long result = maximumPeople(p, x, y, r,n,m); cout << result << endl; return 0; }