#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;
ll num[50005];
char cmd[105];
struct node
{
ll l, r, sum;
}a[200005];
void build(ll loc, ll l, ll r)
{
a[loc].l = l, a[loc].r = r;
if(l == r)a[loc].sum = num[l];
else
{
ll mid = (l + r) / 2;
build(loc * 2, l, mid);
build(loc * 2 + 1, mid + 1, r);
a[loc].sum = a[loc * 2].sum + a[loc * 2 + 1].sum;
}
return ;
}
void ad(ll loc, ll x, ll y)
{
ll l = a[loc].l, r = a[loc].r;
if(l == r && l == x)a[loc].sum += y;
else
{
ll mid = (l + r) / 2;
if(x <= mid)ad(loc * 2, x, y);
else ad(loc * 2 + 1, x, y);
a[loc].sum = a[loc * 2].sum + a[loc * 2 + 1].sum;
}
return ;
}
ll qu(ll loc, ll L, ll R)
{
ll l = a[loc].l, r = a[loc].r;
if(l == L && r == R)return a[loc].sum;
else
{
int mid = (l + r) / 2;
if(mid >= R)return qu(loc * 2, L, R);
else if(mid < L)return qu(loc * 2 + 1, L, R);
else
{
return qu(loc * 2, L, mid) + qu(loc * 2 + 1, mid + 1, R);
}
}
}
int main()
{
ll t, n, m, i, j, k, ca = 1, x, y;
scanf("%lld", &t);
while(t--)
{
scanf("%lld", &n);
printf("Case %lld:\n", ca++);
for(i = 1; i <= n; i++)
{
scanf("%lld", &num[i]);
}
build(1, 1, n);
while(1)
{
scanf("%s", cmd);
if(strcmp(cmd, "End") == 0)break;
else if(strcmp(cmd, "Query") == 0)
{
scanf("%lld %lld", &x, &y);
printf("%lld\n", qu(1, x, y));
}
else if(strcmp(cmd, "Add") == 0)
{
scanf("%lld %lld", &x, &y);
ad(1, x, y);
}
else
{
scanf("%lld %lld", &x, &y);
ad(1, x, -y);
}
}
}
return 0;
}