//http://acm.hdu.edu.cn/showproblem.php?pid=1166
//4671122 2011-09-28 13:02:52 Accepted 1166 31MS 412K 1396 B C++ nkhelloworld
//4671125 2011-09-28 13:03:32 Accepted 1166 62MS 376K 1396 B G++ nkhelloworld
//树状数组点更新求和,比线段树要快
#include <cstdio>
#include <cstring>
const int maxn = 50002;
int BITtree[maxn];
int maxval;
void BITinsert(int pos,int val)
{
while(pos <=maxval)
{
BITtree[pos] += val;
pos += (pos & -pos);
}
}
int BITsum(int pos)
{
int ret = 0;
while(pos > 0)
{
ret += BITtree[pos];
pos -= pos & -pos;
}
return ret;
}
int main()
{
int totcase,numcase,i,j,tmp;
scanf("%d",&totcase);
char op[10];
for(numcase = 1;numcase<=totcase;numcase++)
{
printf("Case %d:\n",numcase);
scanf("%d",&maxval);
memset(BITtree,0,sizeof(BITtree));
for(i=1;i<=maxval;i++)
{
scanf("%d",&tmp);
BITinsert(i,tmp);
}
while(scanf("%s",op))
{
if(op[0] == 'E') break;
scanf("%d%d",&i,&j);
switch(op[0])
{
case 'Q':
{
printf("%d\n",BITsum(j)-BITsum(i-1));
break;
}
case 'A':
{
BITinsert(i,j);
break;
}
case 'S':
{
BITinsert(i,-j);
break;
}
}
}
}
return 0;
}