#include <bits/stdc++.h>
#define SZ(X) ((int)(X).size())
#define ALL(X) (X).begin(), (X).end()
#define REP(I, N) for (int I = 0; I < (N); ++I)
#define REPP(I, A, B) for (int I = (A); I < (B); ++I)
#define RREP(I, N) for (int I= (N)-1; I>=0; --I)
#define RREPP(I, A, B) for(int I = (B)-1; I>=A; --I)
#define CASET int ___T, case_n = 1; scanf("%d ", &___T); while (___T-- > 0)
#define MP make_pair
#define PB push_back
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define LEN(X) strlen(X)
#define F first
#define S second
#define debug(A) REP(i, A.size()) cerr << A[i] << ' '; cerr << '\n'
using namespace std;
typedef pair<int, int> ii;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef long long lld;
typedef unsigned long long ulld;
typedef pair<lld, lld> plld;
typedef vector<lld> vlld;
typedef vector<vlld> vvlld;
typedef long double ld;
typedef vector<ld> vld;
typedef vector<vld> vvld;
struct snode {
int i, j; lld rsum;
snode *l, *r;
~snode() { delete l; delete r; }
snode(int i, int j, const vlld& arr ): i(i), j(j), rsum(0LL) {
if (j - i == 1) {
l = r = NULL; rsum=arr[i];
} else {
int k = i + j >> 1;
l = new snode(i, k, arr); r = new snode(k, j, arr);
rsum = l->rsum + r->rsum;
}
}
void modify(int I, int J){
if( rsum == j - i || j <= I || J <= i ) return;
if( j - i == 1 ){
rsum = (lld) sqrt(rsum);
}else{
l->modify(I,J); r->modify(I,J);
rsum = l->rsum + r->rsum;
}
}
lld sum(int I, int J){
if( I <= i && j <= J ) return rsum;
else if( j <= I || J <= i ) return 0LL;
else return l->sum(I, J) + r->sum(I, J);
}
};
struct segment {
snode *root;
void init(int n, const vlld& arr) {
if(root) delete root;
root = new snode(0, n, arr);
}
lld sum(int i, int j){
if(i>j) swap(i, j);
return root->sum(i, j+1);
}
void modify(int i, int j){
if(i>j) swap(i,j);
return root->modify(i, j+1);
}
};
const int MAXN=1e5+10;
int N, Q, a,b,c, tc; vlld Ai(MAXN);
int main(){
while(scanf("%d",&N)!=EOF){
printf("Case #%d:\n", ++tc);
for(int i=0;i<N;i++) scanf("%lld",&Ai[i]);
segment tree; tree.init(N, Ai); scanf("%d",&Q);
for(int i=0;i<Q;i++){
scanf("%d%d%d",&a,&b,&c); b--; c--;
if(a==0) tree.modify(b, c);
else if(a==1) printf("%lld\n", tree.sum(b, c));
} printf("\n");
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgU1ooWCkgKChpbnQpKFgpLnNpemUoKSkKI2RlZmluZSBBTEwoWCkgKFgpLmJlZ2luKCksIChYKS5lbmQoKQojZGVmaW5lIFJFUChJLCBOKSBmb3IgKGludCBJID0gMDsgSSA8IChOKTsgKytJKQojZGVmaW5lIFJFUFAoSSwgQSwgQikgZm9yIChpbnQgSSA9IChBKTsgSSA8IChCKTsgKytJKQojZGVmaW5lIFJSRVAoSSwgTikgZm9yIChpbnQgST0gKE4pLTE7IEk+PTA7IC0tSSkKI2RlZmluZSBSUkVQUChJLCBBLCBCKSBmb3IoaW50IEkgPSAoQiktMTsgST49QTsgLS1JKQojZGVmaW5lIENBU0VUIGludCBfX19ULCBjYXNlX24gPSAxOyBzY2FuZigiJWQgIiwgJl9fX1QpOyB3aGlsZSAoX19fVC0tID4gMCkKI2RlZmluZSBNUCBtYWtlX3BhaXIKI2RlZmluZSBQQiBwdXNoX2JhY2sKI2RlZmluZSBNUzAoWCkgbWVtc2V0KChYKSwgMCwgc2l6ZW9mKChYKSkpCiNkZWZpbmUgTVMxKFgpIG1lbXNldCgoWCksIC0xLCBzaXplb2YoKFgpKSkKI2RlZmluZSBMRU4oWCkgc3RybGVuKFgpCiNkZWZpbmUgRiBmaXJzdAojZGVmaW5lIFMgc2Vjb25kCiNkZWZpbmUgZGVidWcoQSkgUkVQKGksIEEuc2l6ZSgpKSBjZXJyIDw8IEFbaV0gPDwgJyAnOyBjZXJyIDw8ICdcbicKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3Rvcjx2aT4gdnZpOwogCnR5cGVkZWYgbG9uZyBsb25nIGxsZDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsZDsKdHlwZWRlZiBwYWlyPGxsZCwgbGxkPiBwbGxkOwp0eXBlZGVmIHZlY3RvcjxsbGQ+IHZsbGQ7CnR5cGVkZWYgdmVjdG9yPHZsbGQ+IHZ2bGxkOwogCnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CnR5cGVkZWYgdmVjdG9yPGxkPiB2bGQ7CnR5cGVkZWYgdmVjdG9yPHZsZD4gdnZsZDsKCnN0cnVjdCBzbm9kZSB7CiAgICBpbnQgaSwgajsgbGxkIHJzdW07CiAgICBzbm9kZSAqbCwgKnI7CiAgICB+c25vZGUoKSB7IGRlbGV0ZSBsOyBkZWxldGUgcjsgfQogICAgc25vZGUoaW50IGksIGludCBqLCBjb25zdCB2bGxkJiBhcnIgKTogaShpKSwgaihqKSwgcnN1bSgwTEwpIHsKICAgICAgICBpZiAoaiAtIGkgPT0gMSkgewogICAgICAgICAgICBsID0gciA9IE5VTEw7IHJzdW09YXJyW2ldOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGludCBrID0gaSArIGogPj4gMTsKICAgICAgICAgICAgbCA9IG5ldyBzbm9kZShpLCBrLCBhcnIpOyByID0gbmV3IHNub2RlKGssIGosIGFycik7CiAgICAgICAgICAgIHJzdW0gPSBsLT5yc3VtICsgci0+cnN1bTsKICAgICAgICB9CiAgICB9Cgl2b2lkIG1vZGlmeShpbnQgSSwgaW50IEopewoJCWlmKCByc3VtID09IGogLSBpIHx8IGogPD0gSSB8fCBKIDw9IGkgKSAgcmV0dXJuOwoJCWlmKCBqIC0gaSA9PSAxICl7CgkJCXJzdW0gPSAobGxkKSBzcXJ0KHJzdW0pOwogICAgICAgIH1lbHNlewogICAgICAgIAlsLT5tb2RpZnkoSSxKKTsgci0+bW9kaWZ5KEksSik7CiAgICAgICAgCXJzdW0gPSBsLT5yc3VtICsgci0+cnN1bTsKICAgICAgICB9Cgl9CglsbGQgc3VtKGludCBJLCBpbnQgSil7CgkJaWYoIEkgPD0gaSAmJiBqIDw9IEogKSByZXR1cm4gcnN1bTsKCQllbHNlIGlmKCBqIDw9IEkgfHwgSiA8PSBpICkgcmV0dXJuIDBMTDsKCQllbHNlIHJldHVybiBsLT5zdW0oSSwgSikgKyByLT5zdW0oSSwgSik7Cgl9Cn07CiAKc3RydWN0IHNlZ21lbnQgewogICAgc25vZGUgKnJvb3Q7CiAgICB2b2lkIGluaXQoaW50IG4sIGNvbnN0IHZsbGQmIGFycikgewogICAgCWlmKHJvb3QpIGRlbGV0ZSByb290OwogICAgICAgIHJvb3QgPSBuZXcgc25vZGUoMCwgbiwgYXJyKTsKICAgIH0KICAgIGxsZCBzdW0oaW50IGksIGludCBqKXsKICAgIAlpZihpPmopIHN3YXAoaSwgaik7CiAgICAJcmV0dXJuIHJvb3QtPnN1bShpLCBqKzEpOwogICAgfQogICAgdm9pZCBtb2RpZnkoaW50IGksIGludCBqKXsKICAgIAlpZihpPmopIHN3YXAoaSxqKTsKICAgIAlyZXR1cm4gcm9vdC0+bW9kaWZ5KGksIGorMSk7CiAgICB9Cn07CmNvbnN0IGludCBNQVhOPTFlNSsxMDsKaW50IE4sIFEsIGEsYixjLCB0YzsgdmxsZCBBaShNQVhOKTsKaW50IG1haW4oKXsKCXdoaWxlKHNjYW5mKCIlZCIsJk4pIT1FT0YpewoJCXByaW50ZigiQ2FzZSAjJWQ6XG4iLCArK3RjKTsgCgkJZm9yKGludCBpPTA7aTxOO2krKykgc2NhbmYoIiVsbGQiLCZBaVtpXSk7CgkJc2VnbWVudCB0cmVlOyB0cmVlLmluaXQoTiwgQWkpOyBzY2FuZigiJWQiLCZRKTsKCQlmb3IoaW50IGk9MDtpPFE7aSsrKXsKCQkJc2NhbmYoIiVkJWQlZCIsJmEsJmIsJmMpOyBiLS07IGMtLTsKCQkJaWYoYT09MCkgdHJlZS5tb2RpZnkoYiwgYyk7CgkJCWVsc2UgaWYoYT09MSkgcHJpbnRmKCIlbGxkXG4iLCB0cmVlLnN1bShiLCBjKSk7CgkJfSBwcmludGYoIlxuIik7Cgl9CiAgICByZXR1cm4gMDsKfQ==