/*hdu1166(求區間和)*/#include <cstdio>#include <cstring>#define MAX 50000struct node{ int l,r,num;};node seg_tree[3*MAX];int n;void ori_tree(int n,int l,int r){ int m=(l+r)/2; seg_tree[n].num=0; seg_tree[n].l=l; seg_tree[n].r=r; if (l!=r){ if (l<=m) ori_tree(2*n,l,m); if (m+1<=r) ori_tree(2*n+1,m+1,r); }}int sum(int n,int l,int r){ int m=(seg_tree[n].l+seg_tree[n].r)/2; if (seg_tree[n].l==l && seg_tree[n].r==r) return seg_tree[n].num; else if (r<=m) return sum(n*2,l,r); else if (l>m) return sum(n*2+1,l,r); else return sum(n*2,l,m)+sum(n*2+1,m+1,r);}void insert(int n,int k,int s){ int m=(seg_tree[n].l+seg_tree[n].r)/2; if (seg_tree[n].l==seg_tree[n].r) seg_tree[n].num+=s; else if (k<=m) { seg_tree[n].num+=s; insert(n*2,k,s); } else { seg_tree[n].num+=s; insert(n*2+1,k,s); }}int main(){ int i,j,t,a,b,s; char ord[101]; scanf("%d",&t); for (j=1;j<=t;j++) { scanf("%d",&n); ori_tree(1,1,n); for (i=1;i<=n;i++) { scanf("%d",&s); insert(1,i,s); } printf("Case %d:\n",j); while (scanf("%s",ord) && strcmp(ord,"End")!=0) { scanf("%d%d",&a,&b); if (strcmp(ord,"Add")==0) insert(1,a,b); else if (strcmp(ord,"Sub")==0) insert(1,a,-b); else printf("%d\n",sum(1,a,b)); } } return 0;}