#include <stdio.h>
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const LL N=1e5+5;
template <typename T> void Rd(T &x)
{
int fu=1;
x=0;
char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') fu=-1;
for(;isdigit(ch);ch=getchar()) x=(x<<3)+(x<<1)+(ch-48);
x*=fu;
}
LL n,m, op, x, y,tag[N],b[N],L[N],R[N],tot;
LL a[N],s[N];
int main()
{
while(~scanf("%lld",&n))
{
printf("Case #%lld:\n",++tot);
LL B=sqrt(n);
for (register int i = 1; i <= n; i++)
{
Rd(a[i]);
}
for(register int i=1;R[i-1]+1<=n;i++)
{
tag[i]=s[i]=0;
L[i]=R[i-1]+1,R[i]=min(B*i,n);
for(int j=L[i];j<=R[i];j++)b[j]=i,s[i]+=a[j];
}
Rd(m);
while(m--)
{
Rd(op),Rd(x),Rd(y);
if(x>y)swap(x,y);
if (op)
{
LL sum=0;
LL bx=b[x],by=b[y];
if(bx==by)
{
if(tag[bx])puts("0");
else
{
for(register int i=x;i<=y;i++)sum+=a[i];
printf("%lld\n",sum);
}
continue;
}
for(register int i=x;i<=R[bx];i++)sum+=a[i];
for(register int i=L[by];i<=y;i++)sum+=a[i];
bx++,by--;
for(register int i=bx;i<=by;i++)sum+=s[i];
printf("%lld\n",sum);
}
else
{
LL bx=b[x],by=b[y];
if(bx==by)
{
if(tag[bx])continue;
for(register int i=x;i<=y;i++)
{
s[bx]-=a[i];
a[i]=sqrt(a[i]);
s[bx]+=a[i];
}
tag[bx]=1;
for(register int j=L[bx];j<=R[bx];j++)
{
if(a[j]>1)tag[bx]=0;
}
continue;
}
if(!tag[bx])
{
for(register int i=x;i<=R[bx];i++)
{
s[bx]-=a[i];
a[i]=sqrt(a[i]);
s[bx]+=a[i];
}
tag[bx]=1;
for(register int j=L[bx];j<=R[bx];j++)
{
if(a[j]>1)tag[bx]=0;
}
}
if(!tag[by])
{
for(register int i=L[by];i<=y;i++)
{
s[by]-=a[i];
a[i]=sqrt(a[i]);
s[by]+=a[i];
}
tag[by]=1;
for(register int j=L[by];j<=R[by];j++)
{
if(a[j]>1)tag[by]=0;
}
}
bx++,by--;
for(register int i=bx;i<=by;i++)
{
if(tag[i])continue;
tag[i]=1;
for(register int j=L[i];j<=R[i];j++)
{
s[i]-=a[j];
a[j]=sqrt(a[j]);
s[i]+=a[j];
if(a[j]>1)tag[i]=0;
}
}
}
}
printf("\n");
}
}