#pragma GCC optimize(3)
#pragma GCC optimize(2)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#include<cmath>
#include<iostream>
using namespace std;
#define int long long
int cnt,n,m,a[100005];
char c;
inline void r(int &x)
{
x=0;
while(c<'0'|c>'9') c=getchar();
while(c>='0'&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();
}
struct SegmentTree
{
int l,r;
int sum;
} t[100005<<2];
inline void build(int l,int r,int p)
{
t[p].l=l,t[p].r=r;
if(l==r) return (void)(t[p].sum=a[l]);
int mid=(t[p].l+t[p].r)>>1;
build(l,mid,p<<1),build(mid+1,r,p<<1|1);
t[p].sum=t[p<<1].sum+t[p<<1|1].sum;
}
inline void change(int l,int r,int p)
{
if(t[p].sum<=t[p].r-t[p].l+1) return ;
if(l<=t[p].l&t[p].r<=r&t[p].l==t[p].r) return (void)(t[p].sum=sqrt(t[p].sum));
int mid=(t[p].l+t[p].r)>>1;
if(l<=mid) change(l,r,p*2);
if(r>mid) change(l,r,p*2+1);
t[p].sum=t[p<<1].sum+t[p<<1|1].sum;
}
inline int ask(int l,int r,int p)
{
if(l<=t[p].l&t[p].r<=r) return t[p].sum;
int mid=(t[p].l+t[p].r)>>1,cnt=0;
if(l<=mid) cnt+=ask(l,r,p<<1);
if(r>mid) cnt+=ask(l,r,p<<1|1);
return cnt;
}
signed main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
while(cin>>n)
{
cout<<"Case #"<<++cnt<<":\n";
for(int i=1; i<=n; i++) r(a[i]);
build(1,n,1);
cin>>m;
while(m--)
{
int op,l,r;
cin>>op>>l>>r;
if(l>r) swap(l,r);
if(op==0) change(l,r,1);
if(op==1) cout<<ask(l,r,1)<<'\n';
}
cout<<'\n';
}
return 0;
}