#include <bits/stdc++.h>   using namespace std;   const long long N = 3e5 + 10;   long long n, m;   long long res[N], sum[N], a[N];   long long len;   struct Node {     int x, p, id;   } Q[N];   inline long long read() {     long long x = 0, f = 0;     char ch;     while (((ch = getchar()) <  0  || ch >  9 ) && (ch !=  - ))       ;     while (!isdigit(ch)) f |= ch ==  - , ch = getchar();     while (isdigit(ch)) x = x * 10 + (ch ^ 48), ch = getchar();     return f ? -x : x;   }   inline bool cmp(Node a, Node b) { return a.p != b.p ? a.p < b.p : a.x > b.x; }   signed main() {     n = read();     len = sqrt(n);     for (long long i = 1; i <= n; i++) a[i] = read();     m = read();     for (int i = 1; i <= m; i++) {       long long x, p;       x = read(), p = read();       Q[i].x = x, Q[i].p = p;       Q[i].id = i;     }     sort(Q + 1, Q + m + 1, cmp);     int last = n;     for (int i = 1; i <= m; i++) {       long long ans = 0;       if (Q[i].p >= len) {         for (int j = Q[i].x; j <= n; j += Q[i].p) {           ans += a[j];         }       } else {         int p = Q[i].p, x = Q[i].x;         if (Q[i].p != Q[i - 1].p) last = n;         for (int j = last; j >= x; j--) {           sum[j] = a[j];           if (j + p <= n) sum[j] += sum[j + p];         }         last = x - 1;         ans = sum[x];       }       res[Q[i].id] = ans;     }     for (int i = 1; i <= m; i++) printf( %lld n , res[i]);     return 0;   }   