#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 100010;
long long bit[10][15][MAX_N + 1];
int sizeN;
void initBIT(int n_) {
  sizeN = n_;
  for (int i = 0; i < 10; i++)
    for (int j = 0; j < 15; j++)
      for (int k = 0; k < MAX_N + 1; k++) bit[i][j][k] = 0;
}
long long sumBIT(int z, int mod, int i) {
  i++;
  long long segmentSum = 0;
  while (i > 0) {
    segmentSum += bit[z][mod][i];
    i -= (i & (-i));
  }
  return segmentSum;
}
void addBIT(int z, int mod, int i, long long value) {
  i++;
  while (i <= sizeN) {
    bit[z][mod][i] += value;
    i += (i & (-i));
  }
}
long long a[100010], limit[10][15];
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int z = 2; z <= 6; z++) {
    limit[z][0] = 1;
    for (int mod = 1; mod < (z - 1) * 2; mod++) {
      if (mod < z)
        limit[z][mod] = limit[z][mod - 1] + 1;
      else
        limit[z][mod] = limit[z][mod - 1] - 1;
    }
  }
  initBIT(n);
  for (int z = 2; z <= 6; z++) {
    for (int mod = 0; mod < (z - 1) * 2; mod++) {
      for (int i = 0; i < n; i++)
        addBIT(z, mod, i, a[i] * limit[z][(i + mod) % ((z - 1) * 2)]);
    }
  }
  int m, ti, pi, vi, li, ri, zi;
  cin >> m;
  for (int i = 0; i < m; i++) {
    cin >> ti;
    if (ti == 1) {
      cin >> pi >> vi;
      pi--;
      for (int z = 2; z <= 6; z++) {
        for (int mod = 0; mod < (z - 1) * 2; mod++) {
          long long margin =
              (vi - a[pi]) * limit[z][(pi + mod) % ((z - 1) * 2)];
          addBIT(z, mod, pi, margin);
        }
      }
      a[pi] = vi;
    } else {
      cin >> li >> ri >> zi;
      li--;
      ri--;
      cout << sumBIT(zi,
                     ((zi - 1) * 2 - (li % ((zi - 1) * 2))) % ((zi - 1) * 2),
                     ri) -
                  sumBIT(
                      zi,
                      ((zi - 1) * 2 - (li % ((zi - 1) * 2))) % ((zi - 1) * 2),
                      li - 1)
           << endl;
    }
  }
  return 0;
}
