#include <bits/stdc++.h>
using namespace std;
constexpr long long inf = 1e9 + 7, base = 541;
constexpr long long mod = 1e9 + 7, N = 1e6 + 7;
struct piii {
  long long sm = 0, an = 0, cn = 0;
};
long long n;
long long v[N];
long long sum[4 * N], ans[4 * N];
piii calc(piii x, piii y) {
  x.an += y.an + (y.sm * x.cn - x.sm * y.cn);
  x.sm += y.sm;
  x.cn += y.cn;
  return x;
}
inline long long pos(long long l, long long tp) {
  if (tp == 0)
    return (lower_bound(v, v + n + 1, l) - v);
  else
    return (upper_bound(v, v + n + 1, l) - v);
}
void build(long long s = 0, long long e = n, long long tag = 1) {
  if (e - s == 1) {
    sum[tag] = v[s];
    return;
  }
  long long mid = (s + e) / 2;
  build(s, mid, tag * 2 + 0);
  build(mid, e, tag * 2 + 1);
  sum[tag] = sum[tag * 2] + sum[tag * 2 + 1];
  ans[tag] = ans[tag * 2] + ans[tag * 2 + 1] +
             (sum[tag * 2 + 1] * (mid - s) - sum[tag * 2] * (e - mid));
}
piii query(long long l, long long r, long long tag = 1, long long s = 0,
           long long e = n) {
  piii x, y;
  if (s >= r || e <= l) return x;
  if (s >= l && e <= r) {
    x.sm = sum[tag], x.cn = e - s, x.an = ans[tag];
    return x;
  }
  long long mid = (s + e) / 2;
  x = query(l, r, tag * 2 + 0, s, mid), y = query(l, r, tag * 2 + 1, mid, e);
  return calc(x, y);
}
void builq(long long l, long long r, long long tag = 1, long long s = 0,
           long long e = n) {
  if (s >= r || e <= l) return;
  if (s >= l && e <= r) {
    build(s, e, tag);
    return;
  }
  long long mid = (s + e) / 2;
  builq(l, r, tag * 2 + 0, s, mid), builq(l, r, tag * 2 + 1, mid, e);
  sum[tag] = sum[tag * 2] + sum[tag * 2 + 1];
  ans[tag] = ans[tag * 2] + ans[tag * 2 + 1] +
             (sum[tag * 2 + 1] * (mid - s) - sum[tag * 2] * (e - mid));
}
long long a[N];
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
    v[i] = a[i];
  }
  sort(v, v + n);
  build(0, n, 1);
  long long Q;
  cin >> Q;
  for (long long i = n; i < n + 100; i++) v[i] = 1e18 + 7;
  while (Q--) {
    long long type, l, r;
    cin >> type >> l >> r;
    if (type == 2)
      cout << query(pos(l, 0), pos(r, 1)).an << endl;
    else {
      l--;
      long long x = (0 < pos(a[l], 0) ? pos(a[l], 0) : 0),
                y = (n - 1 > pos(a[l] + r, 0) ? pos(a[l] + r, 0) : n - 1);
      long long ps = x;
      v[x] += r, a[l] += r;
      while (v[ps] > v[ps + 1]) swap(v[ps], v[ps + 1]), ps++;
      while (ps && v[ps] < v[ps - 1]) swap(v[ps], v[ps - 1]), ps--;
      builq((x > y ? y : x), (x < y ? y : x) + 1);
    }
  }
}
