#include <bits/stdc++.h>
using namespace std;
struct vertex {
  long long sum, dist;
  int cnt;
  vertex(long long sum, long long dist, int cnt) {
    this->sum = sum;
    this->dist = dist;
    this->cnt = cnt;
  }
  vertex() { sum = dist = cnt = 0; }
};
int x[100100];
int b[100100];
int ty[100100];
int l[100100];
int r[100100];
vector<int> a;
vertex t[2000010];
int k;
inline vertex merge(vertex a, vertex b) {
  vertex res;
  res.sum = a.sum + b.sum;
  res.cnt = a.cnt + b.cnt;
  res.dist = b.sum * a.cnt - a.sum * b.cnt + a.dist + b.dist;
  return res;
}
inline void mod(int p, vertex v) {
  p += k - 1;
  t[p] = v;
  p >>= 1;
  while (p) {
    t[p] = merge(t[p + p], t[p + p + 1]);
    p >>= 1;
  }
}
inline vertex find(int l, int r, int L, int R, int v) {
  if ((l == L) && (r == R)) return t[v];
  int m = (L + R) / 2;
  if (r <= m) return find(l, r, L, m, v + v);
  if (l > m) return find(l, r, m + 1, R, v + v + 1);
  return merge(find(l, m, L, m, v + v), find(m + 1, r, m + 1, R, v + v + 1));
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = (0); i < (n); ++i) {
    scanf("%d", &x[i]);
    b[i] = x[i];
    a.push_back(x[i]);
  }
  int m;
  scanf("%d", &m);
  for (int i = (0); i < (m); ++i) {
    scanf("%d%d%d", &ty[i], &l[i], &r[i]);
    if (ty[i] == 1) {
      b[l[i] - 1] += r[i];
      a.push_back(b[l[i] - 1]);
    } else {
      a.push_back(l[i]);
      a.push_back(r[i]);
    }
  }
  sort(a.begin(), a.end());
  a.resize(unique(a.begin(), a.end()) - a.begin());
  k = 1;
  while (k < a.size()) k += k;
  for (int i = (0); i < (n); ++i) {
    int v = lower_bound(a.begin(), a.end(), x[i]) - a.begin();
    vertex ver = *new vertex(x[i], 0, 1);
    mod(v + 1, ver);
  }
  for (int i = (0); i < (m); ++i) {
    if (ty[i] == 1) {
      int v = lower_bound(a.begin(), a.end(), x[l[i] - 1]) - a.begin();
      mod(v + 1, *new vertex());
      x[l[i] - 1] += r[i];
      v = lower_bound(a.begin(), a.end(), x[l[i] - 1]) - a.begin();
      vertex ver = *new vertex(x[l[i] - 1], 0, 1);
      mod(v + 1, ver);
    } else {
      int l1 = lower_bound(a.begin(), a.end(), l[i]) - a.begin();
      int r1 = lower_bound(a.begin(), a.end(), r[i]) - a.begin();
      vertex v = find(l1 + 1, r1 + 1, 1, k, 1);
      printf("%I64d\n", v.dist);
    }
  }
  return 0;
}
