#include<stdio.h>
#include<string.h>
int c[60000];
struct node
{
struct node *rchild,*lchild;
int right,left,val;
};
int creat_tree( int l,int r,struct node *q)
{
int mid;
struct node *q1,*q2;
q1=new node,q2=new node;
q->lchild=q1,q->rchild=q2;
q->left=l;
q->right=r;
if(q->right==q->left)
return q->val=c[l];
mid=(q->left+q->right)/2;
return q->val=creat_tree(l,mid,q1)+creat_tree(mid+1,r,q2);
}
void print(struct node *l )
{
if(l)
{
//printf("hello world\n");
printf("%d %d %d\n",l->left,l->right,l->val);
print(l->lchild);
print(l->rchild);
}
}
void update(int j,int v,struct node *q)
{
int mid;
// struct node *q1,*q2;
// q1=new node,q2=new node;
// q->lchild=q1;
// q->rchild=q2;
q->val+=v;
if(q->left==q->right)
return ;
mid=(q->left+q->right)/2;
if(mid>=j)
update(j,v,q->lchild);
else
update(j,v,q->rchild);
}
int query(int l,int r,struct node *q)
{
int mid;
if(q->left==l&&q->right==r)
return q->val;
mid=(q->left+q->right)/2;
if(mid>=r)
query(l,r,q->lchild);
else if(mid<l)
query(l,r,q->rchild);
else
{
return query(l,mid,q->lchild)+query(mid+1,r,q->rchild);
}
}
int main( )
{
int T,N,a,b,d,e,i,k=0;
struct node *p;
p=new node;
scanf("%d",&T);
while(T--)
{
scanf("%d",&N);
for( i=1 ;i<=N;i++)
scanf("%d",&c[i]);
creat_tree(1,N,p);
//print(p);
printf("Case %d:\n",++k);
char ch[20];
while(1)
{
scanf("%s",ch);
if(ch[0]=='E')
break;
scanf("%d%d",&d,&e);
if(ch[0]=='A')
update(d,e,p);
else if(ch[0]=='S')
update(d,-e,p);
else if(ch[0]=='Q')
{
printf("%d\n",query(d,e,p));
}
}
}
return 0;
}