#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define rep(i, n) for(int(i) = 0; (i) < (n); (i)++) #define FOR(i, m, n) for(int(i) = (m); (i) < (n); (i)++) #define All(v) (v).begin(), (v).end() #define pb push_back #define MP(a, b) make_pair((a), (b)) using ll = long long; using pii = pair; using pll = pair; const int INF = 1 << 30; const ll LINF = 1LL << 60; const int MOD = 1e9 + 7; int main() { int N; cin >> N; vector A(N); rep(i, N) cin >> A[i]; vector> to(61, vector(N)); vector> sum(61, vector(N)); rep(i, N) { to[0][i] = (i + A[i]) % N; sum[0][i] = A[i]; } // to[i][j]:=jからスタートして2^i回後の場所 // sum[i][j]:=jからスタートして2^i回後に足される値 for(int k = 0; k < 60; k++) { for(int i = 0; i < N; i++) { to[k + 1][i] = to[k][to[k][i]]; sum[k + 1][i] = sum[k][i] + sum[k][to[k][i]]; } } int Q; cin >> Q; rep(i, Q) { ll K; cin >> K; int cur = 0; ll res = 0; for(int k = 60; k >= 0; k--) { if(K & (1LL << k)) { res += sum[k][cur]; cur = to[k][cur]; } } cout << res << endl; } return 0; }