//学习线段树Ing 看的这篇blog :http://www.notonlysuccess.com/index.php/segment-tree-complete/ 稍微改了一下
#include <cstdio>
#define LSON(x) x<<1
#define RSON(x) x<<1|1
#define MAXLEN 50005
int sum[MAXLEN<<2];
int L, R;
void pushUp(int pos)
{
sum[pos] = sum[LSON(pos)] + sum[RSON(pos)];
}
void buildTree(int s, int e, int pos)
{
if(s == e)
{
scanf("%d", &sum[pos]);
return;
}
int mid = (s+e)>>1;
buildTree(s, mid, LSON(pos));
buildTree(mid+1, e, RSON(pos));
pushUp(pos);
}
void updata(int p, int s, int e, int add, int pos)
{
int mid;
sum[pos] += add;
do{
mid = (s+e)>>1;
if(p <= mid)
{
e = mid;
pos = LSON(pos);
}
else
{
s = mid+1;
pos = RSON(pos);
}
sum[pos] += add;
}while(s != e);
}
int query(int s, int e, int pos)
{
if(L <= s && e <= R)
return sum[pos];
int ans = 0;
int mid = (s+e)>>1;
if(L <= mid) ans += query(s, mid, LSON(pos));
if(R > mid) ans += query(mid+1, e, RSON(pos));
return ans;
}
int main()
{
int T, n, a, b;
char s[10];
scanf("%d", &T);
for(int cases=1; cases<=T; cases++)
{
printf("Case %d:\n", cases);
scanf("%d", &n);
buildTree(1, n, 1);
while(true)
{
scanf("%s", s);
if(s[0] == 'E') break;
scanf("%d%d", &L, &R);
if(s[0] == 'Q')
printf("%d\n", query(1, n, 1));
else if(s[0] == 'A')
updata(L, 1, n, R, 1);
else if(s[0] == 'S')
updata(L, 1, n, -R, 1);
}
}
return 0;
}