1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5
6 struct node
7 {
8 int left,right,flag;
9 long long sum;
10 }tree[600000];
11
12 int n;
13 int a[200001];
14 string q;
15
16 void build(int node,int left,int right)
17 {
18 tree[node].left=left;tree[node].right=right;
19 if(left==right)
20 {
21 tree[node].sum=a[left];
22 return;
23 }
24 int mid=(left+right)>>1;
25 build(node<<1,left,mid);
26 build(node<<1|1,mid+1,right);
27 tree[node].sum=tree[node<<1].sum+tree[node<<1|1].sum;
28 }
29
30 void pushdown(int node)
31 {
32 int x=tree[node].right-tree[node].left+1;
33 tree[node<<1].flag+=tree[node].flag;
34 tree[node<<1|1].flag+=tree[node].flag;
35 tree[node<<1].sum+=(x-(x>>1))*tree[node].flag;
36 tree[node<<1|1].sum+=(x>>1)*tree[node].flag;
37 tree[node].flag=0;
38 }
39
40 void update(int node,int left,int right,int x)
41 {
42 int mid=(tree[node].left+tree[node].right)>>1;
43 tree[node].sum+=(right-left+1)*x;
44 if(tree[node].left==left&&tree[node].right==right)
45 {
46 tree[node].flag+=x;
47 return;
48 }
49 if(tree[node].left==tree[node].right) return;
50 if(tree[node].flag>0) pushdown(node);
51 if(right<=mid) update(node<<1,left,right,x);
52 else if(left>mid) update(node<<1|1,left,right,x);
53 else
54 {
55 update(node<<1,left,mid,x);
56 update(node<<1|1,mid+1,right,x);
57 }
58 tree[node].sum=tree[node<<1].sum+tree[node<<1|1].sum;
59 }
60
61 void Add(int node,int pos,int x)
62 {
63 tree[node].sum+=x;
64 if(tree[node].left!=tree[node].right)
65 {
66 int mid=(tree[node].left+tree[node].right)>>1;
67 if(pos<mid)
68 Add(node<<1,pos,x);
69 else
70 Add(node<<1|1,pos,x);
71 }
72 }
73
74 long long query(int node,int left,int right)
75 {
76 int mid=(tree[node].left+tree[node].right)>>1;
77 if(tree[node].left==left&&tree[node].right==right)
78 return tree[node].sum;
79 if(tree[node].flag>0) pushdown(node);
80 if(right<=mid)
81 return query(node<<1,left,right);
82 else if(left>mid)
83 return query(node<<1|1,left,right);
84 else
85 return query(node<<1,left,mid)+query(node<<1|1,mid+1,right);
86 }
87
88 int main()
89 {
90 int T;
91 cin>>T;
92 for(int K=1;K<=T;K++)
93 {
94 printf("Case %d:\n");
95 cin>>n;
96 for(int i=1;i<=n;i++)
97 cin>>a[i];
98 build(1,1,n);
99 while(cin>>q&&q!="End")
100 {
101 int t,x;
102 cin>>t>>x;
103 if(q=="Add") Add(1,t,x);
104 else if(q=="Sub") Add(1,t,-x);
105 else if(q=="Query") cout<<query(1,t,x)<<endl;
106 }
107 }
108 return 0;
109 }