#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,a[100005];
int cnt=0;
struct tree{
int l,r,sum,maxn;
}tr[1000005*4];
inline void pushup(int p)
{
tr[p].sum=tr[p<<1].sum+tr[p<<1|1].sum;
tr[p].maxn=max(tr[p<<1].maxn,tr[p<<1|1].maxn);
}
inline void build(int p,int l,int r)
{
if(l==r)
{
tr[p]={l,r,a[l],a[l]};
return ;
}
tr[p]={l,r,0,0};
int mid=(l+r)>>1;
build(p<<1,l,mid);
build(p<<1|1,mid+1,r);
pushup(p);
}
inline void modify(int p,int l,int r)
{
if(tr[p].l==tr[p].r)
{
tr[p].sum=sqrt(tr[p].sum);
tr[p].maxn=sqrt(tr[p].maxn);
return ;
}
int mid=(tr[p].l+tr[p].r)>>1;
if(l<=mid&&tr[p<<1].maxn>1)
modify(p<<1,l,r);
if(r>mid&&tr[p<<1|1].maxn>1)
modify(p<<1|1,l,r);
pushup(p);
}
inline int query(int p,int l,int r)
{
if(tr[p].l==tr[p].r)
{
return tr[p].sum;
}
int sum=0;
int mid=(tr[p].l+tr[p].r)>>1;
if(l<=mid)sum+=query(p<<1,l,r);
if(r>mid)sum+=query(p<<1|1,l,r);
return sum;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
while(cin>>n)
{
cnt++;
int flag=1;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
build(1,1,n);
cin>>m;
for(int i=1;i<=m;i++)
{
int k,l,r;
cin>>k>>l>>r;
if(l>r)swap(l,r);
if(k==1)
{
if(flag)
{
cout<<"Case #"<<cnt<<":"<<endl;
flag=0;
}
cout<<query(1,l,r)<<endl;
}
if(k==0)
{
modify(1,l,r);
}
}
cout<<"\n";
}
return 0;
}