#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <string.h>
#define MAX 50001
using namespace std;
int data[MAX];
int sum;
struct NODE
{
int lRange,rRange;
int sum;
}node[MAX<<4];
void build(int root,int lRange,int rRange)
{
node[root].lRange = lRange;
node[root].rRange = rRange;
if(lRange == rRange) {
node[root].sum = data[lRange];
return;
}
int mid = (lRange + rRange)>>1;
build(root<<1,lRange,mid);
build(root<<1|1,mid+1,rRange);
node[root].sum = node[root<<1].sum + node[root<<1|1].sum;
}
void update(int root, int target,int var)
{
while(node[root].lRange != node[root].rRange)
{
node[root].sum += var;
int tmp = root<<1;
if(target <= node[tmp].rRange)
root = tmp;
else{
root = tmp+1;
}
}
node[root].sum += var;
}
void Query(int root,int begin,int end)
{
if(node[root].lRange == begin && node[root].rRange == end){
sum += node[root].sum;
return ;
}
if(end <= node[root<<1].rRange){
Query(root<<1,begin,end);
} else if(begin >= node[root<<1|1].lRange) {
Query(root<<1|1,begin,end);
}else {
Query(root<<1,begin,node[root<<1].rRange);
Query(root<<1|1,node[root<<1|1].lRange,end);
}
}
int main()
{
int T,n;
char str[10];
bool flag;
int index,index1,index2,var;
scanf("%d",&T);
for(int i=1;i<=T;i++)
{
flag = false;
scanf("%d",&n);
for(int j=1;j<=n;j++)
scanf("%d",&data[j]);
build(1,1,n);
cout<<"Case "<<i<<":"<<endl;
while(true)
{
scanf("%s",str);
if(strcmp(str,"Query")==0){
scanf("%d%d",&index1,&index2);
sum = 0;
Query(1,index1,index2);
cout<<sum<<endl;
} else if(strcmp(str,"Add")==0){
scanf("%d%d",&index,&var);
update(1,index,var);
} else if(strcmp(str,"Sub")==0){
scanf("%d%d",&index,&var);
update(1,index,-var);
} else{
break;
}
}
}
//system("pause");
return 0;
}