#include <bits/stdc++.h>
using namespace std;
const long long int sz = 7e5;
long long int sum[sz];
long long int mi[sz];
long long int arr[sz];
void build(long long int node, long long int l, long long int r) {
  if (l == r) {
    sum[node] = arr[l];
  } else {
    long long int mid = (l + r) / 2;
    build(2 * node, l, mid);
    build(2 * node + 1, mid + 1, r);
    sum[node] = sum[node * 2] + sum[node * 2 + 1];
  }
}
long long int query(long long int node, long long int l, long long int r,
                    long long int tl, long long int tr) {
  if (l > tr || r < tl)
    return 0;
  else if (l >= tl && r <= tr)
    return sum[node];
  else
    return (query(node * 2, l, (l + r) / 2, tl, tr) +
            query(node * 2 + 1, (l + r) / 2 + 1, r, tl, tr));
}
void build2(long long int node, long long int l, long long int r) {
  if (l == r) {
    mi[node] = arr[l];
  } else {
    long long int mid = (l + r) / 2;
    build2(2 * node, l, mid);
    build2(2 * node + 1, mid + 1, r);
    mi[node] = min(mi[node * 2], mi[node * 2 + 1]);
  }
}
long long int query2(long long int node, long long int l, long long int r,
                     long long int tl, long long int tr) {
  if (l > tr || r < tl)
    return 0;
  else if (l >= tl && r <= tr)
    return mi[node];
  else
    return min(query2(node * 2, l, (l + r) / 2, tl, tr),
               query2(node * 2 + 1, (l + r) / 2 + 1, r, tl, tr));
}
long long int pre[sz];
int main() {
  std::ios::sync_with_stdio(false);
  long long int n;
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> arr[i];
  build(1, 1, n);
  build2(1, 1, n);
  sort(arr, arr + n + 1);
  for (int i = 1; i <= n; i++) {
    pre[i] = pre[i - 1] + arr[i];
  }
  long long int q;
  cin >> q;
  while (q--) {
    long long int t;
    cin >> t;
    if (t == 1) {
      long long int l, r;
      cin >> l >> r;
      cout << query(1, 1, n, l, r) << endl;
    } else {
      long long int l, r;
      cin >> l >> r;
      cout << pre[r] - pre[l - 1] << endl;
    }
  }
  return 0;
}
