#include <iostream>
#include <cstdio>
using namespace std;
const int maxn=50005;
int sum[4*maxn];
int a[maxn];
void build(int u,int l,int r)
{
if(l==r)
{
sum[u]=a[l];
return ;
}
int mid=(l+r)>>1;
build(2*u,l,mid);
build(2*u+1,mid+1,r);
sum[u]=sum[2*u]+sum[2*u+1];
}
void update(int u,int l,int r,int pos,int val)
{
if(l==r)
{
sum[u]+=val;
return;
}
int mid=(l+r)>>1;
if(pos<=mid)update(2*u,l,mid,pos,val);
else update(2*u+1,mid+1,r,pos,val);
sum[u]=sum[2*u]+sum[2*u+1];
}
int query(int u,int l,int r,int tl,int tr)
{
if(l>=tl&&r<=tr)
{
return sum[u];
}
int mid=(l+r)>>1;
if(tr<=mid)return query(2*u,l,mid,tl,tr);
else if(tl>mid)return query(2*u+1,mid+1,r,tl,tr);
else
{
int t1=query(2*u,l,mid,tl,mid);
int t2=query(2*u+1,mid+1,r,mid+1,tr);
return t1+t2;
}
}
int main()
{
int t,n,i,tcase=0;
cin>>t;
while(t--)
{
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
build(1,1,n);//这是建树!
char ch[10];
printf("Case %d:\n",++tcase);
while(cin>>ch && ch[0]!='E')
{
int l,r;
scanf("%d%d",&l,&r);
if(ch[0]=='Q')printf("%d\n",query(1,1,n,l,r));
else
{
if(ch[0]=='S')
r*=-1;
update(1,1,n,l,r);//更新
}
}
}
return 0;
}
#include <cstdio>
using namespace std;
const int maxn=50005;
int sum[4*maxn];
int a[maxn];
void build(int u,int l,int r)
{
if(l==r)
{
sum[u]=a[l];
return ;
}
int mid=(l+r)>>1;
build(2*u,l,mid);
build(2*u+1,mid+1,r);
sum[u]=sum[2*u]+sum[2*u+1];
}
void update(int u,int l,int r,int pos,int val)
{
if(l==r)
{
sum[u]+=val;
return;
}
int mid=(l+r)>>1;
if(pos<=mid)update(2*u,l,mid,pos,val);
else update(2*u+1,mid+1,r,pos,val);
sum[u]=sum[2*u]+sum[2*u+1];
}
int query(int u,int l,int r,int tl,int tr)
{
if(l>=tl&&r<=tr)
{
return sum[u];
}
int mid=(l+r)>>1;
if(tr<=mid)return query(2*u,l,mid,tl,tr);
else if(tl>mid)return query(2*u+1,mid+1,r,tl,tr);
else
{
int t1=query(2*u,l,mid,tl,mid);
int t2=query(2*u+1,mid+1,r,mid+1,tr);
return t1+t2;
}
}
int main()
{
int t,n,i,tcase=0;
cin>>t;
while(t--)
{
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
build(1,1,n);//这是建树!
char ch[10];
printf("Case %d:\n",++tcase);
while(cin>>ch && ch[0]!='E')
{
int l,r;
scanf("%d%d",&l,&r);
if(ch[0]=='Q')printf("%d\n",query(1,1,n,l,r));
else
{
if(ch[0]=='S')
r*=-1;
update(1,1,n,l,r);//更新
}
}
}
return 0;
}