#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int n,m,k,l,r,len,id[N],b[N],t;
unsigned long long a[N],sum[N];
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
void add(int l,int r){
int sid=id[l],eid=id[r];
unsigned long long cnt=0;
if(sid==eid){
for(int i=l;i<=r;i++){
sum[sid]-=a[i];
a[i]=sqrt(a[i]);
sum[sid]+=a[i];
}
return;
}
for(int i=l;id[i]==sid;i++){
sum[sid]-=a[i];
a[i]=sqrt(a[i]);
sum[sid]+=a[i];
}
for(int i=sid+1;i<eid;i++){
if(b[i]==0){
cnt=0;
for(int j=1;j<=len;j++){
sum[i]-=a[j+(i-1)*len];
a[j+(i-1)*len]=sqrt(a[j+(i-1)*len]);
if(a[j+(i-1)*len]==1){
cnt++;
}
sum[i]+=a[j+(i-1)*len];
}
if(cnt==len){
b[i]=1;
sum[i]=len;
}
}
}
for(int i=r;id[i]==eid;i--){
sum[eid]-=a[i];
a[i]=sqrt(a[i]);
sum[eid]+=a[i];
}
return;
}
unsigned long long query(int l,int r){
int sid=id[l],eid=id[r];
unsigned long long ans=0;
if(sid==eid){
for(int i=l;i<=r;i++){
ans+=a[i];
}
return ans;
}
for(int i=l;id[i]==sid;i++){
ans+=a[i];
}
for(int i=sid+1;i<eid;i++){
ans+=sum[i];
}
for(int i=r;id[i]==eid;i--){
ans+=a[i];
}
return ans;
}
signed main(){
ios::sync_with_stdio(false);
while(cin){
n=read();
t++;
memset(sum,0,sizeof(sum));
len=sqrt(n);
for(int i=1;i<=n;i++){
a[i]=read();
id[i]=(i-1)/len+1;
sum[id[i]]+=a[i];
}
m=read();
cout<<"Case #"<<t<<":"<<endl;
for(int i=1;i<=m;i++){
cin>>k>>l>>r;
if(l>r){
swap(l,r);
}
if(k==0){
add(l,r);
}
if(k==1){
cout<<query(l,r)<<endl;
}
}
cout<<endl;
}
return 0;
}