#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100000 + 10;
int n, m;
int arr[MAXN];
class Nod {
 public:
  Nod *l, *r;
  int lpos, rpos, mid, num;
  long long ans, sum;
  Nod(int lpos = 0, int rpos = 0, long long ans = 0, long long sum = 0,
      int num = 0) {
    this->lpos = lpos;
    this->rpos = rpos;
    mid = (lpos + rpos) / 2;
    this->ans = ans;
    this->sum = sum;
    this->num = num;
    l = r = NULL;
  }
  void buildChild() {
    if (l == NULL) l = new Nod(lpos, mid);
    if (r == NULL) r = new Nod(mid, rpos);
  }
  void update(Nod* a, Nod* l, Nod* r) {
    a->num = l->num + r->num;
    a->sum = l->sum + r->sum;
    a->ans = l->ans + r->ans + r->sum * l->num - r->num * l->sum;
  }
  void change(int x, bool b) {
    if (b) buildChild();
    if (rpos - lpos == 1) {
      num = b;
      sum = x * b;
      if (ans)
        cerr << "\"khanj\""
             << "= "
             << "khanj" << endl;
      return;
    }
    if (x < mid)
      l->change(x, b);
    else
      r->change(x, b);
    update(this, l, r);
  }
  Nod* get(int ll, int rr) {
    if (lpos >= rr || rpos <= ll || l == NULL) return new Nod();
    if (lpos >= ll && rpos <= rr) return new Nod(0, 0, ans, sum, num);
    Nod* ansl = l->get(ll, rr);
    Nod* ansr = r->get(ll, rr);
    Nod* ret = new Nod();
    update(ret, ansl, ansr);
    delete (ansl), delete (ansr);
    return ret;
  }
};
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  Nod root(-1000000010, 1000000010);
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
    root.change(arr[i], 1);
  }
  cin >> m;
  for (long long c, u, v, i = 0; i < m; i++) {
    cin >> c >> u >> v;
    if (c == 1) {
      int oldu = arr[u - 1];
      arr[u - 1] += v;
      root.change(oldu, 0);
      root.change(v + oldu, 1);
    }
    if (c == 2) {
      Nod* ans = root.get(u, v + 1);
      cout << ans->ans << '\n';
      delete (ans);
    }
  }
}
