#include<bits/stdc++.h>
#define reg register int
#define INF (1<<30)
#define int long long
using namespace std;
int read(){
int res=0,fs=1; char c=getchar();
while(!(c>='0' && c<='9')){ if(c=='-')fs=-1; c=getchar(); }
while(c>='0' && c<='9')res=res*10+c-'0',c=getchar();
return res*fs;
}
void print(int x){
if(x<0) { putchar('-'); x=-x;}
if(x>9) print(x/10);
putchar(x%10+'0');
}
int S;
//int lazy[200005];
bool flag[2005];
int a[202020],n,cnt,m,ans,tmp,l,r,k,z,x[200005],y[200005],id[200005],v[2010];
inline void sh(int l,int r){ //修改操作
int ll=id[l],rr=id[r];
if(ll==rr){
for(int i=l;i<=r;i++) {
v[ll]-=(a[i]-sqrt(a[i]));
a[i]=sqrt(a[i]);
}
return ;
}
for(int i=ll+1;i<=rr-1;++i) {
if(flag[i]==0){
int fl=0;
v[i]=0;
for(int j=x[i];j<=y[i];j++){
v[i]+=sqrt(a[j]);
a[j]=sqrt(a[j]);
if(a[j]!=1) fl=1;
}
if(fl==0) flag[i]=1;
}
}
for(int i=l;i<=y[ll];++i) {
v[ll]-=(a[i]-sqrt(a[i]));
a[i]=sqrt(a[i]);
}
for(int i=x[rr];i<=r;++i){
v[rr]-=(a[i]-sqrt(a[i]));
a[i]=sqrt(a[i]);
}
}
inline int cx(int l,int r){//查询操作
//l~~r
int ll=id[l],rr=id[r];
int ret=0;
if(ll==rr){
for(int i=l;i<=r;i++) ret+=a[i];
return ret;
}
for(int i=ll+1;i<=rr-1;++i) ret+=v[i];
for(int i=l;i<=y[ll];++i) ret+=a[i];
for(int i=x[rr];i<=r;++i) ret+=a[i];
return ret;
}
signed main() {
ios::sync_with_stdio(false);
cin>>n;
S=sqrt(n);
for(int i=1;i<=n;i++) cin>>a[i];
cin>>m;
for(int i=1;i<=S;i++){
x[i]=(i-1)*S+1,y[i]=min(i*S,n);
}
if(y[S]<n) S++,x[S]=y[S-1]+1,y[S]=n;
for(int i=1;i<=S;i++){
for(int j=x[i];j<=y[i];j++) {
id[j]=i;
v[i]+=a[j];
}
}
while(m--){
int op;
cin>>op;
if(op==0){
cin>>l>>r;
// if(l>r) tmp=l,l=r,r=tmp;
if(l>r){
tmp=l;
l=r;
r=tmp;
}
sh(l,r);
}else if(op==1){
cin>>l>>r;
// if(l>r) tmp=l,l=r,r=tmp;
if(l>r){
tmp=l;
l=r;
r=tmp;
}
cout<<cx(l,r)<<endl;
}
}
return 0;
}