#include <bits/stdc++.h>
using namespace std;
int n, a[111111];
long long s[7][13][111111];
void add(int x, long long y) {
  for (int i = (2); i <= (6); ++i)
    for (int j = 0; j < (2 * (i - 1)); ++j) {
      int zd = (x + 2 * (i - 1) - j) % (2 * (i - 1));
      if (zd == 0)
        zd = 2;
      else if (zd > i)
        zd = 2 * i - zd;
      for (int t = x; t < 111111; t += t - (t & (t - 1))) s[i][j][t] += y * zd;
    }
}
long long ask(int x, int z, int d) {
  long long ret = 0;
  for (; x; x &= x - 1) ret += s[z][d][x];
  return ret;
}
int main() {
  scanf("%d", &n);
  for (int i = (1); i <= (n); ++i) {
    scanf("%d", a + i);
    add(i, a[i]);
  }
  int q;
  scanf("%d", &q);
  for (int qq = 0; qq < (q); ++qq) {
    int t, x, y, z;
    scanf("%d", &t);
    if (t == 1) {
      scanf("%d%d", &x, &y);
      add(x, -a[x]);
      a[x] = y;
      add(x, a[x]);
    } else {
      scanf("%d%d%d", &x, &y, &z);
      int m = 2 * (z - 1);
      int j;
      for (int jj = 0; jj < (m); ++jj) {
        int zd = (x + m - jj) % m;
        if (zd == 0)
          zd = 2;
        else if (zd > z)
          zd = 2 * z - zd;
        if (zd == 1) {
          j = jj;
          break;
        }
      }
      printf("%I64d\n", ask(y, z, j) - ask(x - 1, z, j));
    }
  }
  return 0;
}
