#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int num[50005];
class Node
{
public:
int left,right;
int sum;
Node()
{
left=right=0;
sum=0;
}
};
Node stree[1000005]; //我估计15万的数组就行
void createTree(int L,int R,int t)
{
stree[t].left=L;
stree[t].right=R;
if(L==R)
{
stree[t].sum=num[L];
return;
}
int middle=(L+R)/2;
createTree(L,middle,2*t);
if(middle+1<=R)
{
createTree(middle+1,R,2*t+1);
stree[t].sum=stree[2*t].sum+stree[2*t+1].sum;
}
else
{
stree[t].sum=stree[2*t].sum;
}
}
void change(int now,int target,int value)
{
//cout<<"cao"<<endl;
stree[now].sum+=value;
if(stree[now].left==stree[now].right)return;
int middle=(stree[now].left+stree[now].right)/2;
if(target>=middle+1)
{
change(now*2+1,target,value);
return;
}
if(target<=middle)
{
change(now*2,target,value);
return;
}
//if(stree[now].left==stree[now].right)
}
int query(int L,int R,int i)
{
//cout<<L<<" "<<R<<" "<<i<<endl;
if(L==stree[i].left && R==stree[i].right)return stree[i].sum;
int middle=(stree[i].left+stree[i].right)/2;
//cout<<middle<<endl;
if(R<=middle)
{
return query(L,R,i*2);
}
if(L>=middle+1)
{
return query(L,R,i*2+1);
}
return query(L,middle,i*2)+query(middle+1,R,i*2+1);
}
int main()
{
//freopen("in.txt","r",stdin);
int T;
int num1,num2;
string s;
scanf("%d",&T);
for(int Case=1;Case<=T;Case++)
{
cout<<"Case "<<Case<<':'<<endl;
int N;
cin>>N;
for(int i=1;i<=N;i++)
{
scanf("%d",&num[i]);
//cout<<num[i]<<" ";
}
createTree(1,N,1);
while(1)
{
cin>>s;
if(s=="End")break;
scanf("%d %d",&num1,&num2);
if(s=="Query")
{
printf("%d\n",query(num1,num2,1));
continue;
}
if(s=="Sub")
{
num2=-num2;
}
change(1,num1,num2);
}
}
return 0;
}