#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef tuple<ll, ll, ll> t3l;
typedef tuple<ll, ll, ll, ll> t4l;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<vvl> vvvl;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<vvi> vvvi;

#define FOR(i, a, b) for (int (i) = (a); (i) <= (b); (i)++)
#define ROF(i, a, b) for (int (i) = (a); (i) >= (b); (i)--)
#define REP(i, n) FOR(i, 0, (n)-1)
#define sqr(x) ((x) * (x))
#define all(x) (x).begin(), (x).end()
#define pb push_back
#define eb emplace_back
#define ef emplace_front
#define em emplace
#define mp make_pair
#define chkmin(a, b) a = min(a, b)
#define chkmax(a, b) a = max(a, b)
#define _1 first
#define _2 second

// FILL by byte!!!
#define FILL(arr, num) memset(arr, num, sizeof(arr))
#define ln cout << endl;

#ifndef ONLINE_JUDGE
#define dbg(x...) do { cout << "\033[32;1m " << #x << " -> "; err(x); } while (0)
void err() { cout << "\033[39;0m" << endl; }
template<template<typename...> class T, typename t, typename... A>
void err(T<t> a, A... x) { for (auto v: a) cout << v << ' '; err(x...); }
template<typename T, typename... A>
void err(T a, A... x) { cout << a << ' '; err(x...); }
#else
#define dbg(...)
#define err(...)
#endif
// end

template <typename T>
using MinHeap = priority_queue<T, vector<T>, greater<T>>;
template <typename T>
using MaxHeap = priority_queue<T>;

const ld PI = 3.14159265358979323846;
const ld E = 2.718281828459;
ll MOD = 1e9+7;
ll M(ll n) {return (n % MOD + MOD) % MOD;}
ll pow2(ll n) {return 1ll << n;}

mt19937 rng((unsigned int) chrono::steady_clock::now().time_since_epoch().count());
#define uid(a, b) uniform_int_distribution<int>(a, b)(rng)



int main(int argn, char **argv) {
    ios::sync_with_stdio(false);
    cout.tie(nullptr);
    cin.tie(nullptr);

    int T = 1;
    // cin >> T;
    REP(I, T) {
		ll n; cin >> n;
		vl c(n+2); FOR(i, 1, n) cin >> c[i];
		vl b(n+1); FOR(i, 1, n-1) cin >> b[i];
		ll q; cin >> q;
		vl x(q); REP(i, q) cin >> x[i];

		ll lo = 0;
		vl a(n+1); FOR(i, 1, n-1) a[i] = a[i-1] + b[i];
		vl bp(n+1); FOR(i, 1, n-1) bp[i] = bp[i-1] + a[i], chkmin(lo, -(bp[i] / (i+1))-1);
		// dbg(bp); dbg(lo);

		ll mx = 1;
		FOR(i, 1, n) mx = mx * (c[i]+1) %MOD;

		map<ll, ll> ma;
		FOR(val, lo, lo+101) {
			vvl dp(n+1, vl(1e4+1, 0)), pdp(n+1, vl(1e4+1, 0));
			FOR(i, 0, 1e4) pdp[0][i] = 1;

			FOR(i, 1, n) {
				FOR(j, 0, 1e4) if ((j-bp[i-1]) >= val * i) {
					if (j>c[i]) dp[i][j] = (pdp[i-1][j] - pdp[i-1][j-c[i]-1] + MOD) %MOD;
					else dp[i][j] = pdp[i-1][j];
				}
					
				pdp[i][0] = dp[i][0];
				FOR(j, 1, 1e4) pdp[i][j] = (pdp[i][j-1] + dp[i][j]) %MOD;
			}
			ma[val] = pdp[n][1e4];
			// dbg(val, ma[val]);
		}


		REP(i, q) {
			ll val = x[i];
			if (val < lo) cout << mx << endl;
			else if (val > lo + 101) cout << 0 << endl;
			else cout << ma[val] << endl;
		}
	}
    return 0;
}