#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>#include<map>#include<set>#include<list>#include<stack>#include<algorithm>#include<queue>#include<vector>#include<time.h>#include<iomanip>#include<assert.h>using namespace std;const int maxn = 100015;int maxv[maxn];int n;int sumv[maxn];bool sure[maxn];void R(int i){ while(i+3 < n+1){ sure[i+3] = 1; maxv[i+3] = sumv[i+2] - sumv[i+1] + maxv[i]; i = i+3; }}void L(int i){ while(i-3 >=1){ sure[i-3] = 1; maxv[i-3] = sumv[i-2] - (sumv[i-1] - maxv[i]); i = i-3; }}int main(){ while(scanf("%d",&n)!=EOF){ memset(maxv,0,sizeof(maxv)); memset(sure,0,sizeof(sure)); for(int i = 1; i < n+1;++i){ int a; scanf("%d",&a); maxv[i] = a; if(a>=0)sure[i] = 1; } for(int i = 1; i < n + 1;++i){ scanf("%d",&sumv[i]); } R(0); L(n+1); int pos = -1; for(int i = 0;i<=n;++i){ if(maxv[i] >=0 && maxv[i+1] >=0) {sure[i] = 1;sure[i+1] = 1;pos = i;break;} } if(pos >= 0){ for(int j = pos + 2;j < n+1;++j){ maxv[j] = sumv[j-1] - maxv[j-1] - maxv[j-2]; sure[j] = 1; } for(int j = pos - 1;j>=1;--j){ maxv[j] = sumv[j+1] - maxv[j+1] - maxv[j+2]; sure[j] = 1; } } for(int i = 0; i <= n+1;++i)if(maxv[i]>=0)sure[i] = 1; int min1 = 0; int min2 = 0; if(!sure[1])maxv[1] = 0; if(!sure[2])maxv[2] = 0; for(int i = 4; i <= n;i+=3){ if(sure[i])continue; maxv[i] =maxv[i-3] - sumv[i-2] +sumv[i-1]; min1 = max(min1,-maxv[i]); } for(int i = 5; i <= n ;i+=3){ if(sure[i])continue; maxv[i] = maxv[i-3] - sumv[i-2] +sumv[i-1]; min2 = max(min2,-maxv[i]); } int m; scanf("%d",&m); while(m--){ int p; scanf("%d",&p); p++; if(sure[p]) printf("%dn",maxv[p]); else if(p%3 == 1){ printf("%dn",sumv[1] - min2 +maxv[p]); } else { printf("%dn",sumv[1] - min1 + maxv[p]); } } } return 0;}