#include<bits/stdc++.h>
using namespace std;
int n,f[100001],m,k,l,r;
long long a[100001],tree[100001];
void add(int x,long long v){
for(int i=x;i<=n;i+=i&-i) tree[i]+=v;
}
long long query(int x){
long long ans=0;
for(int i=x;i;i-=i&-i) ans+=tree[i];
return ans;
}
int find(int x){
if(f[x]==x) return x;
return f[x]=find(f[x]);
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
add(i,a[i]);
f[i]=i;
}
cin>>m;
f[n+1]=n+1;
while(m--){
cin>>k>>l>>r;
if(l>r) swap(l,r);
if(k==0){
for(int i=l;i<=r;){
add(i,(int)sqrt(a[i])-a[i]);
a[i]=(int)sqrt(a[i]);
if(a[i]==1) f[i]=i+1;
if(find(f[i])==i) i++;
else i=f[i];
}
}
else cout<<query(r)-query(l-1)<<'\n';
}
}