#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+10,M=505;
ll n,m,T,B,arr[N],sum[M],L[M],R[M],pos[N];
bool fl[M];
inline void cha(ll le,ll ri)
{
ll p=pos[le],q=pos[ri];
if(p==q&&fl[p])
{
for(int i=le;i<=ri;i++)
{
sum[p]-=arr[i];
arr[i]=sqrt(arr[i]);
sum[p]+=arr[i];
}
if(sum[p]==(R[p]-L[p]+1)) fl[p]=true;
}
else
{
for(int i=p+1;i<=q-1;i++)
{
if(fl[i]) continue;
for(int j=L[i];j<=R[i];j++)
{
sum[i]-=arr[j];
arr[j]=sqrt(arr[j]);
sum[i]+=arr[j];
}
if(sum[i]==(R[i]-L[i]+1)) fl[i]=1;
}
if(!fl[p])
{
for(int i=le;i<=R[p];i++)
{
sum[p]-=arr[i];
arr[i]=sqrt(arr[i]);
sum[p]+=arr[i];
}
}
if(!fl[q])
{
for(int i=L[q];i<=ri;i++)
{
sum[q]-=arr[i];
arr[i]=sqrt(arr[i]);
sum[q]+=arr[i];
}
}
}
if(sum[p]==(R[p]-L[p]+1)) fl[p]=1;
if(sum[q]==(R[q]-L[q]+1)) fl[q]=1;
}
inline ll ask(ll le,ll ri)
{
ll p=pos[le],q=pos[ri],ans=0;
if(p==q)
{
for(int i=le;i<=ri;i++) ans+=arr[i];
}
else
{
for(int i=p+1;i<=q-1;i++) ans+=sum[i];
for(int i=le;i<=R[p];i++) ans+=arr[i];
for(int i=L[q];i<=ri;i++) ans+=arr[i];
}
return ans;
}
int main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++) scanf("%lld",&arr[i]);
scanf("%lld",&m);
T=max(1ll,(ll)sqrt(n));B=max(1ll,n/T);
for(int i=1;i<=T;i++)
{
L[i]=(i-1)*B+1;
R[i]=i*B;
}
if(R[T]<n)
{
T++;
L[T]=R[T-1]+1;
R[T]=n;
}
for(int i=1;i<=T;i++)
{
for(int j=L[i];j<=R[i];j++)
{
sum[i]+=arr[j];
pos[j]=i;
}
}
while(m--)
{
ll opt,l,r;
scanf("%lld%lld%lld",&opt,&l,&r);
if(l>r) swap(l,r);
if(!opt) cha(l,r);
else printf("%lld\n",ask(l,r));
}
return 0;
}