#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e5+10;
int n,m;
ll a[N],b[N];
int main(){
a[0]=0,b[0]=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
b[i]=a[i];
}
sort(b+1,b+1+n);
for(int i=1;i<=n;i++){
a[i]+=a[i-1];
b[i]+=b[i-1];
}
int flag,l,r;
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d%d%d",&flag,&l,&r);
if(flag==1)printf("%lld\n",a[r]-a[l-1]);
if(flag==2)printf("%lld\n",b[r]-b[l-1]);
}
return 0;
}
开两个long long的数组a,b,都输入后a的不变,对b排下序,然后输入问询,用前缀和公式还原连续子段和输出即可