#include<bits/stdc++.h>
using namespace std;
int n,m;
long long a[100005];
struct node{
int l,r;
long long mx,sum;
#define l(x) t[x].l
#define r(x) t[x].r
#define mx(x) t[x].mx
#define sum(x) t[x].sum
}t[100005*4];
inline void build(int p,int l,int r){
l(p)=l;
r(p)=r;
if(l==r){
sum(p)=a[l];
mx(p)=a[l];
return;
}
int mid=(l+r)/2;
build(p*2,l,mid);
build(p*2+1,mid+1,r);
sum(p)=sum(p*2)+sum(p*2+1);
mx(p)=max(mx(p*2),mx(p*2+1));
}
inline void change(int p,int l,int r){
if(l(p)==r(p)){
sum(p)=sqrt(sum(p));
mx(p)=sqrt(mx(p));
return;
}
int mid=(l(p)+r(p))/2;
if(l<=mid && mx(p*2)>1) change(p*2,l,r);
if(r>mid && mx(p*2+1)>1) change(p*2+1,l,r);
sum(p)=sum(p*2)+sum(p*2+1);
mx(p)=max(mx(p*2),mx(p*2+1));
}
inline long long ask(int p,int l,int r){
if(l<=l(p) && r>=r(p)) return sum(p);
int mid=(l(p)+r(p))/2;
long long v=0;
if(l<=mid) v+=ask(p*2,l,r);
if(r>mid) v+=ask(p*2+1,l,r);
return v;
}
inline int read() {
register int x = 0, f = 0;
register char c = getchar();
while (c < '0' || c > '9') { if (c == '-') f |= 1; c = getchar(); }
while (c >= '0' && c <= '9') { x = (x<<3)+(x<<1)+(c^48); c = getchar(); }
return f ? -x : x;
}
int main(){
register int c=1;
freopen("1.txt","w",stdout);
while(~scanf("%d",&n)){
cout<<"Case #"<<c<<":"<<endl;
c++;
memset(a,0,sizeof(a));
memset(t,0,sizeof(t));
for(int i=1;i<=n;i++) a[i]=read();
build(1,1,n);
m=read();
while(m--){
int t1=read(),t2=read(),t3=read();
if(t2>t3) swap(t2,t3);
if(t1==0){
change(1,t2,t3);
}
else{
printf("%lld\n",ask(1,t2,t3));
}
}
printf("\n");
}
return 0;
}
记录