1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=200005;
4 int n,a_tot,q_tot,ans[N];
5 char s[10];
6 struct query
7 {
8 int id,v,op;
9 bool operator < (const query &rhs)const
10 {
11 if(id==rhs.id) return op<rhs.op;
12 return id<rhs.id;
13 }
14 }query[N],tmp[N];
15 void init()
16 {
17 a_tot=0; q_tot=0;
18 memset(ans,0,sizeof(ans));
19 }
20 void cdq(int l,int r)
21 {
22 if(l==r) return;
23 int m=(l+r)>>1;
24 cdq(l,m); cdq(m+1,r);
25 int p=l,q=m+1,tot=0,sum=0;
26 while(p<=m && q<=r)
27 {
28 if(query[p]<query[q])
29 {
30 if(query[p].op==1) sum+=query[p].v;
31 tmp[tot++]=query[p++];
32 }
33 else
34 {
35 if(query[q].op==2) ans[query[q].v]+=sum;
36 else if(query[q].op==3) ans[query[q].v]-=sum;
37 tmp[tot++]=query[q++];
38 }
39 }
40 while(p<=m) tmp[tot++]=query[p++];
41 while(q<=r)
42 {
43 if(query[q].op==2) ans[query[q].v]+=sum;
44 else if(query[q].op==3) ans[query[q].v]-=sum;
45 tmp[tot++]=query[q++];
46 }
47 for(int i=0;i<tot;i++) query[i+l]=tmp[i];
48 }
49 int main()
50 {
51 int T; scanf("%d",&T);
52 for(int Case=1;Case<=T;Case++)
53 {
54 init();
55 scanf("%d",&n);
56 for(int i=1;i<=n;i++)
57 {
58 int g; scanf("%d",&g);
59 query[a_tot].op=1;
60 query[a_tot].id=i;
61 query[a_tot++].v=g;
62 }
63 while(scanf("%s",&s)!=EOF)
64 {
65 if(s[0]=='E') break;
66 if(s[0]=='S' || s[0]=='A')
67 {
68 int flag=1,x,v;
69 if(s[0]=='S') flag=-1;
70 scanf("%d%d",&x,&v);
71 query[a_tot].id=x;
72 query[a_tot].v=flag*v;
73 query[a_tot++].op=1;
74 }
75 else
76 {
77 int l,r; scanf("%d%d",&l,&r);
78 query[a_tot].id=l-1;
79 query[a_tot].op=3;
80 query[a_tot++].v=q_tot;
81 query[a_tot].id=r;
82 query[a_tot].op=2;
83 query[a_tot++].v=q_tot;
84 q_tot++;
85 }
86 }
87 cdq(0,a_tot-1);
88 printf("Case %d:\n",Case);
89 for(int i=0;i<q_tot;i++) printf("%d\n",ans[i]);
90 }
91 return 0;
92 }