#include <bits/stdc++.h>
using namespace std;
const int MAX = int(1e5) + 10;
typedef struct node* pnode;
long long myrand() { return rand() << 16 + rand(); }
struct node {
  int value, cnt;
  long long prior, sum1, sum2;
  pnode l, r;
  node() {}
  node(int value, long long prior)
      : value(value),
        cnt(1),
        prior(prior),
        sum1(value),
        sum2(value),
        l(NULL),
        r(NULL) {}
};
int cnt(pnode it) { return it ? it->cnt : 0; }
void upd_cnt(pnode it) {
  if (it) it->cnt = cnt(it->l) + cnt(it->r) + 1;
}
void update_sum(pnode it) {
  if (it) {
    int cc = cnt(it->l) + 1;
    it->sum1 = it->value;
    it->sum2 = (long long)it->value * cc;
    if (it->l) {
      it->sum1 += it->l->sum1;
      it->sum2 += it->l->sum2;
    }
    if (it->r) {
      it->sum1 += it->r->sum1;
      it->sum2 += it->r->sum2 + cc * it->r->sum1;
    }
  }
}
void merge(pnode& t, pnode l, pnode r) {
  if (!l || !r)
    t = l ? l : r;
  else if (l->prior > r->prior)
    merge(l->r, l->r, r), t = l;
  else
    merge(r->l, l, r->l), t = r;
  upd_cnt(t);
  update_sum(t);
}
void lower_split(pnode t, pnode& l, pnode& r, int key) {
  if (!t) return void(l = r = 0);
  int cur_key = t->value;
  if (key <= cur_key)
    lower_split(t->l, l, t->l, key), r = t;
  else
    lower_split(t->r, t->r, r, key), l = t;
  upd_cnt(t);
  update_sum(t);
}
void upper_split(pnode t, pnode& l, pnode& r, int key) {
  if (!t) return void(l = r = 0);
  int cur_key = t->value;
  if (key < cur_key)
    upper_split(t->l, l, t->l, key), r = t;
  else
    upper_split(t->r, t->r, r, key), l = t;
  upd_cnt(t);
  update_sum(t);
}
void insert(pnode& t, int val) {
  pnode t1, t2, it;
  lower_split(t, t1, t2, val);
  it = new node(val, myrand());
  merge(t, t1, it);
  merge(t, t, t2);
}
void erase(pnode& t, int key) {
  if (!t) return;
  int cur_key = t->value;
  if (cur_key == key)
    merge(t, t->l, t->r);
  else if (key < cur_key)
    erase(t->l, key);
  else
    erase(t->r, key);
  upd_cnt(t);
  update_sum(t);
}
long long query(pnode t, int l, int r) {
  pnode t1, t2, t3;
  lower_split(t, t1, t2, l);
  upper_split(t2, t2, t3, r);
  long long ans = 0;
  if (t2) {
    ans = 2 * t2->sum2 - (t2->cnt + 1) * t2->sum1;
  }
  merge(t, t1, t2);
  merge(t, t, t3);
  return ans;
}
int N;
int a[MAX];
pnode root;
int main() {
  root = NULL;
  scanf("%d", &N);
  for (int i = 1; i <= N; i++) {
    scanf("%d", a + i);
    insert(root, a[i]);
  }
  int Q;
  scanf("%d", &Q);
  while (Q--) {
    int typ, x, y;
    scanf("%d%d%d", &typ, &x, &y);
    if (typ == 1) {
      erase(root, a[x]);
      a[x] += y;
      insert(root, a[x]);
    } else {
      long long ans = query(root, x, y);
      printf("%I64d\n", ans);
    }
  }
  return 0;
}
