#include<bits/stdc++.h>
using namespace std;
#define int long long
int mymax(int A,int B)
{
return A>B? A:B;
}
struct qwerty
{
int sum[100010*4],mx[100010*4],a[100010];
#define ls (n<<1)
#define rs (n<<1|1)
void pu(int n)
{
sum[n]=sum[ls]+sum[rs];
mx[n]=mymax(mx[ls],mx[rs]);
}
void bd(int n,int l,int r)
{
if(l==r)
{
sum[n]=a[l];
mx[n]=a[r];
return;
}
int mid=(l+r)>>1;
bd(ls,l,mid);
bd(rs,mid+1,r);
pu(n);
}
void cg(int n,int l,int r,int ll,int rr)
{
if(l==r)
{
sum[n]=sqrt(sum[n]);
mx[n]=sqrt(mx[n]);
return;
}
int mid=(l+r)>>1;
if(ll<=mid&&mx[ls]>1)
cg(ls,l,mid,ll,rr);
if(rr>mid&&mx[rs]>1)
cg(rs,mid+1,r,ll,rr);
pu(n);
}
int qu(int n,int l,int r,int ll,int rr)
{
if(ll<=l&&r<=rr)
return sum[n];
int mid=(l+r)>>1,ans=0;
if(ll<=mid)
ans+=qu(ls,l,mid,ll,rr);
if(rr>mid)
ans+=qu(rs,mid+1,r,ll,rr);
return ans;
}
}xds;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n;
for(int i=1;i<=n;i++)
cin>>xds.a[i];
xds.bd(1,1,n);
cin>>m;
for(int i=1;i<=m;i++)
{
int k,l,r;
cin>>k>>l>>r;
if(l>r)
{
int sw=l;
l=r;
r=sw;
}
if(k==0)
{
xds.cg(1,1,n,l,r);
}
else
{
cout<<xds.qu(1,1,n,l,r)<<'\n';
}
}
return 0;
}