#include<bits/stdc++.h>
using namespace std;
#define lld long long
#define MAX 100005
lld a[MAX];
template<class T>
class BIT
{
T *tree;
int size;
public:
BIT(int sz)
{
tree = new T[sz+1];
for(int i=0;i<=sz;i++)
tree[i] = 0;
size = sz;
}
void update(int idx,lld value)
{
while(idx<=size)
{
tree[idx]+=value;
idx+=(idx&(-idx));
}
}
lld read(int idx)
{
lld sum =0;
while(idx>0)
{
sum = sum + tree[idx];
idx-=(idx&(-idx));
}
return sum;
}
};
void unMark(int start,int end,BIT<lld> bit1,BIT<lld> bit2)
{
if(start>end)
return;
int mid = (start+end)/2;
if(start==end)
{
if(a[start]!=1)
{
lld temp = a[start];
a[start] = floor(sqrtl(a[start]));
bit1.update(start+1,a[start]-temp);
if(a[start]==1)
bit2.update(start+1,1);
}
return;
}
if(a[mid]!=1)
{
lld temp = a[mid];
a[mid] = floor(sqrtl(a[mid]));
bit1.update(mid+1,a[mid]-temp);
if(a[mid]==1)
bit2.update(mid+1,1);
}
if(bit2.read(mid)-bit2.read(start)==0)
unMark(start,mid-1,bit1,bit2);
if(bit2.read(end+1)-bit2.read(mid+1)==0)
unMark(mid+1,end,bit1,bit2);
}
int main()
{
int n,q,x,y,type,t=1;
while(scanf("%d",&n)!=EOF)
{
printf("Case #%d:\n",t);
t++;
for(int i=0;i<n;i++)
scanf("%lld",&a[i]);
BIT<lld> bit1(n),bit2(n);
for(int i=0;i<n;i++)
{
bit1.update(i+1,a[i]);
if(a[i]==1)
bit2.update(i+1,1);
}
scanf("%d",&q);
while(q--)
{
scanf("%d%d%d",&type,&x,&y);
if(x>y)
swap(x,y);
x--;
y--;
if(type==0)
{
unMark(x,y,bit1,bit2);
}
else
{
lld sum = bit1.read(y+1) - bit1.read(x);
printf("%lld\n",sum);
}
}
printf("\n");
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGxkIGxvbmcgbG9uZwojZGVmaW5lIE1BWCAxMDAwMDUKCmxsZCBhW01BWF07CnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzIEJJVAp7CiAgICBUICp0cmVlOwogICAgaW50IHNpemU7CiAgICBwdWJsaWM6CgogICAgICAgIEJJVChpbnQgc3opCiAgICAgICAgewogICAgICAgICAgICB0cmVlID0gbmV3IFRbc3orMV07CiAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8PXN6O2krKykKICAgICAgICAgICAgICAgIHRyZWVbaV0gPSAwOwogICAgICAgICAgICBzaXplID0gc3o7CiAgICAgICAgfQogICAgICAgIHZvaWQgdXBkYXRlKGludCBpZHgsbGxkIHZhbHVlKQogICAgICAgIHsKICAgICAgICAgICAgd2hpbGUoaWR4PD1zaXplKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0cmVlW2lkeF0rPXZhbHVlOwogICAgICAgICAgICAgICAgaWR4Kz0oaWR4JigtaWR4KSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbGxkIHJlYWQoaW50IGlkeCkKICAgICAgICB7CiAgICAgICAgICAgIGxsZCBzdW0gPTA7CiAgICAgICAgICAgIHdoaWxlKGlkeD4wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdW0gPSBzdW0gKyB0cmVlW2lkeF07CiAgICAgICAgICAgICAgICBpZHgtPShpZHgmKC1pZHgpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc3VtOwogICAgICAgIH0KfTsKCnZvaWQgdW5NYXJrKGludCBzdGFydCxpbnQgZW5kLEJJVDxsbGQ+IGJpdDEsQklUPGxsZD4gYml0MikKewogICAgaWYoc3RhcnQ+ZW5kKQogICAgICAgIHJldHVybjsKICAgIGludCBtaWQgPSAoc3RhcnQrZW5kKS8yOwoKICAgIGlmKHN0YXJ0PT1lbmQpCiAgICB7CgogICAgICAgIGlmKGFbc3RhcnRdIT0xKQogICAgICAgIHsKICAgICAgICAgICAgbGxkIHRlbXAgPSBhW3N0YXJ0XTsKICAgICAgICAgICAgYVtzdGFydF0gPSBmbG9vcihzcXJ0bChhW3N0YXJ0XSkpOwogICAgICAgICAgICBiaXQxLnVwZGF0ZShzdGFydCsxLGFbc3RhcnRdLXRlbXApOwogICAgICAgICAgICBpZihhW3N0YXJ0XT09MSkKICAgICAgICAgICAgICAgIGJpdDIudXBkYXRlKHN0YXJ0KzEsMSk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKCiAgICB9CiAgICBpZihhW21pZF0hPTEpCiAgICB7CgogICAgICAgIGxsZCB0ZW1wID0gYVttaWRdOwogICAgICAgIGFbbWlkXSA9IGZsb29yKHNxcnRsKGFbbWlkXSkpOwoKICAgICAgICBiaXQxLnVwZGF0ZShtaWQrMSxhW21pZF0tdGVtcCk7CgogICAgICAgIGlmKGFbbWlkXT09MSkKICAgICAgICAgICAgYml0Mi51cGRhdGUobWlkKzEsMSk7CiAgICB9CgogICAgaWYoYml0Mi5yZWFkKG1pZCktYml0Mi5yZWFkKHN0YXJ0KT09MCkKICAgICAgICB1bk1hcmsoc3RhcnQsbWlkLTEsYml0MSxiaXQyKTsKICAgIGlmKGJpdDIucmVhZChlbmQrMSktYml0Mi5yZWFkKG1pZCsxKT09MCkKICAgICAgICB1bk1hcmsobWlkKzEsZW5kLGJpdDEsYml0Mik7Cn0KCmludCBtYWluKCkKewogICAgaW50IG4scSx4LHksdHlwZSx0PTE7CgogICAgd2hpbGUoc2NhbmYoIiVkIiwmbikhPUVPRikKICAgIHsKICAgICAgICBwcmludGYoIkNhc2UgIyVkOlxuIix0KTsKICAgICAgICB0Kys7CgogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgIHNjYW5mKCIlbGxkIiwmYVtpXSk7CgogICAgICAgIEJJVDxsbGQ+IGJpdDEobiksYml0MihuKTsKCiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGJpdDEudXBkYXRlKGkrMSxhW2ldKTsKICAgICAgICAgICAgaWYoYVtpXT09MSkKICAgICAgICAgICAgICAgIGJpdDIudXBkYXRlKGkrMSwxKTsKICAgICAgICB9CgogICAgICAgIHNjYW5mKCIlZCIsJnEpOwogICAgICAgIHdoaWxlKHEtLSkKICAgICAgICB7CiAgICAgICAgICAgIHNjYW5mKCIlZCVkJWQiLCZ0eXBlLCZ4LCZ5KTsKCiAgICAgICAgICAgIGlmKHg+eSkKICAgICAgICAgICAgICAgc3dhcCh4LHkpOwogICAgICAgICAgICB4LS07CiAgICAgICAgICAgIHktLTsKCiAgICAgICAgICAgIGlmKHR5cGU9PTApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHVuTWFyayh4LHksYml0MSxiaXQyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGxsZCBzdW0gPSBiaXQxLnJlYWQoeSsxKSAtIGJpdDEucmVhZCh4KTsKICAgICAgICAgICAgICAgIHByaW50ZigiJWxsZFxuIixzdW0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHByaW50ZigiXG4iKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cgo=