#include <bits/stdc++.h>
using namespace std;
int p[11][10], m[100100];
long long d[2 * (1 << 21)];
void add(int i, long long v) {
  for (i += (1 << 21), v -= d[i]; i; d[i] += v, i >>= 1)
    ;
}
long long get(int i, int j) {
  long long r;
  for (r = 0, i += (1 << 21), j += (1 << 21); i <= j; i >>= 1, j >>= 1) {
    if (i & 1) r += d[i++];
    if (~j & 1) r += d[j--];
  }
  return r;
}
int main() {
  int i, j, n, k, t, v, ii, jj, b;
  long long r;
  for (scanf("%d", &n), i = 0; i < n; scanf("%d", &m[i]), i++)
    ;
  for (t = 0, k = 2; k <= 10; k++)
    for (j = 0; j < k; j++)
      for (p[k][j] = t, i = j; i < n; add(t, m[i]), t++, i += k)
        ;
  for (scanf("%d", &n); n--;) {
    scanf("%d", &t);
    if (t == 1) {
      scanf("%d%d", &i, &j);
      i--;
      for (k = 2; k <= 10; add(p[k][i % k] + i / k, j), k++)
        ;
    } else {
      scanf("%d%d%d", &i, &j, &k);
      i--;
      j--;
      k = (k - 1) * 2;
      for (r = 0, t = 0; t < k; t++) {
        if (t > j) break;
        v = p[k][t];
        ii = (i + ((t - i) % k + k) % k) / k;
        jj = (j - ((j - t) % k + k) % k) / k;
        b = ((t - i) % k + k) % k;
        r += get(v + ii, v + jj) * (b <= k / 2 ? b + 1 : k - b + 1);
      }
      printf("%I64d\n", r);
    }
  }
  return 0;
}
