func_code_string: #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);       }     }   }   