#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>
#include<map>
using namespace std;
#define sd(a) scanf("%d",&a)
#define pd(a) printf("%d\n",(a))
#define LL long long
int t[2050][2050];
int pos[1050][1050],n;
void build1(int node,int si,int sj,int parent,int row)
{
if(si==sj)
{
t[parent][node]=0;
pos[row][si]=parent*10000+node;
return;
}
build1(node*2,si,(si+sj)/2,parent,row);
build1(node*2+1,(si+sj)/2+1,sj,parent,row);
t[parent][node]=0;
}
void build(int node,int si,int sj)
{
int i;
if(si==sj)
{
build1(1,0,n-1,node,si);
return;
}
build(node*2,si,(si+sj)/2);
build(node*2+1,(si+sj)/2+1,sj);
int lim=pow(2,1+ceil(log2(n)));
for(i=1;i<=2000;++i)
t[node][i]=0;
}
void update1(int node,int parent,int diff)
{
if(node)
{
t[parent][node]+=diff;
update1(node>>1,parent,diff);
}
}
void update(int node,int child,int diff)
{
if(node)
{
t[node][child]+=diff;
update1(child>>1,node,diff);
update(node>>1,child,diff);
}
}
int query1(int node,int si,int sj,int st,int en,int parent)
{
if(si>en||sj<st)
return 0;
if(si>=st&&sj<=en)
{
return t[parent][node];
}
return (query1(node*2,si,(si+sj)/2,st,en,parent)+query1(node*2+1,(si+sj)/2+1,sj,st,en,parent));
}
int query(int node,int si,int sj,int st,int en,int cols,int cole)
{
if(si>en||sj<st)
return 0;
if(si>=st&&sj<=en)
{
return query1(1,0,n-1,cols,cole,node);
}
return query(node*2,si,(si+sj)/2,st,en,cols,cole)+query(node*2+1,(si+sj)/2+1,sj,st,en,cols,cole);
}
int main()
{
int test,x,y,x1,y1,num,hash,diff,x2,y2;
char s[5];
sd(test);
while(test--)
{
sd(n);
build(1,0,n-1);
while(true)
{
scanf("%s",&s);
if(s[1]=='E')
{
scanf("%d %d %d",&x,&y,&num);
hash=pos[x][y];
x1=hash/10000;
y1=hash%10000;
diff=num-t[x1][y1];
t[x1][y1]=num;
update1(y1>>1,x1,diff);
update(x1>>1,y1,diff);
}
else if(s[1]=='U')
{
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
printf("%d\n",query(1,0,n-1,x1,x2,y1,y2));
}
else
{
printf("\n");
break;
}
}
}
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8Y3N0cmluZz4KI2luY2x1ZGU8Y21hdGg+CiNpbmNsdWRlPHN0YWNrPgojaW5jbHVkZTxxdWV1ZT4KI2luY2x1ZGU8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBzZChhKSBzY2FuZigiJWQiLCZhKQojZGVmaW5lIHBkKGEpIHByaW50ZigiJWRcbiIsKGEpKQojZGVmaW5lIExMIGxvbmcgbG9uZwppbnQgdFsyMDUwXVsyMDUwXTsKaW50IHBvc1sxMDUwXVsxMDUwXSxuOwoKdm9pZCBidWlsZDEoaW50IG5vZGUsaW50IHNpLGludCBzaixpbnQgcGFyZW50LGludCByb3cpCnsKCWlmKHNpPT1zaikKCXsKCQl0W3BhcmVudF1bbm9kZV09MDsKCQlwb3Nbcm93XVtzaV09cGFyZW50KjEwMDAwK25vZGU7CgkJcmV0dXJuOwoJfQoJYnVpbGQxKG5vZGUqMixzaSwoc2krc2opLzIscGFyZW50LHJvdyk7CglidWlsZDEobm9kZSoyKzEsKHNpK3NqKS8yKzEsc2oscGFyZW50LHJvdyk7Cgl0W3BhcmVudF1bbm9kZV09MDsKfQp2b2lkIGJ1aWxkKGludCBub2RlLGludCBzaSxpbnQgc2opCnsKCWludCBpOwoJaWYoc2k9PXNqKQoJewkKCQlidWlsZDEoMSwwLG4tMSxub2RlLHNpKTsKCQlyZXR1cm47Cgl9CglidWlsZChub2RlKjIsc2ksKHNpK3NqKS8yKTsKCWJ1aWxkKG5vZGUqMisxLChzaStzaikvMisxLHNqKTsKCWludCBsaW09cG93KDIsMStjZWlsKGxvZzIobikpKTsKCWZvcihpPTE7aTw9MjAwMDsrK2kpCgkJdFtub2RlXVtpXT0wOwp9CnZvaWQgdXBkYXRlMShpbnQgbm9kZSxpbnQgcGFyZW50LGludCBkaWZmKQp7CglpZihub2RlKQoJewoJCXRbcGFyZW50XVtub2RlXSs9ZGlmZjsKCQl1cGRhdGUxKG5vZGU+PjEscGFyZW50LGRpZmYpOwoJfQp9CnZvaWQgdXBkYXRlKGludCBub2RlLGludCBjaGlsZCxpbnQgZGlmZikKewoJaWYobm9kZSkKCXsKCQl0W25vZGVdW2NoaWxkXSs9ZGlmZjsKCQl1cGRhdGUxKGNoaWxkPj4xLG5vZGUsZGlmZik7CgkJdXBkYXRlKG5vZGU+PjEsY2hpbGQsZGlmZik7Cgl9Cn0KaW50IHF1ZXJ5MShpbnQgbm9kZSxpbnQgc2ksaW50IHNqLGludCBzdCxpbnQgZW4saW50IHBhcmVudCkKewoJaWYoc2k+ZW58fHNqPHN0KQoJCXJldHVybiAwOwoJaWYoc2k+PXN0JiZzajw9ZW4pCgl7CgkJcmV0dXJuIHRbcGFyZW50XVtub2RlXTsKCX0KCXJldHVybiAocXVlcnkxKG5vZGUqMixzaSwoc2krc2opLzIsc3QsZW4scGFyZW50KStxdWVyeTEobm9kZSoyKzEsKHNpK3NqKS8yKzEsc2osc3QsZW4scGFyZW50KSk7Cn0KaW50IHF1ZXJ5KGludCBub2RlLGludCBzaSxpbnQgc2osaW50IHN0LGludCBlbixpbnQgY29scyxpbnQgY29sZSkKewoJaWYoc2k+ZW58fHNqPHN0KQoJCXJldHVybiAwOwoJaWYoc2k+PXN0JiZzajw9ZW4pCgl7CgkJcmV0dXJuIHF1ZXJ5MSgxLDAsbi0xLGNvbHMsY29sZSxub2RlKTsKCX0KCXJldHVybiBxdWVyeShub2RlKjIsc2ksKHNpK3NqKS8yLHN0LGVuLGNvbHMsY29sZSkrcXVlcnkobm9kZSoyKzEsKHNpK3NqKS8yKzEsc2osc3QsZW4sY29scyxjb2xlKTsKfQppbnQgbWFpbigpCnsKCWludCB0ZXN0LHgseSx4MSx5MSxudW0saGFzaCxkaWZmLHgyLHkyOwoJY2hhciBzWzVdOwoJc2QodGVzdCk7Cgl3aGlsZSh0ZXN0LS0pCgl7CgkJc2Qobik7CgkJYnVpbGQoMSwwLG4tMSk7CgkJd2hpbGUodHJ1ZSkKCQl7CgkJCXNjYW5mKCIlcyIsJnMpOwoJCQlpZihzWzFdPT0nRScpCgkJCXsKCQkJCXNjYW5mKCIlZCAlZCAlZCIsJngsJnksJm51bSk7CgkJCQloYXNoPXBvc1t4XVt5XTsKCQkJCXgxPWhhc2gvMTAwMDA7CgkJCQl5MT1oYXNoJTEwMDAwOwoJCQkJZGlmZj1udW0tdFt4MV1beTFdOwoJCQkJdFt4MV1beTFdPW51bTsKCQkJCXVwZGF0ZTEoeTE+PjEseDEsZGlmZik7CgkJCQl1cGRhdGUoeDE+PjEseTEsZGlmZik7CgkJCX0KCQkJZWxzZSBpZihzWzFdPT0nVScpCgkJCXsKCQkJCXNjYW5mKCIlZCAlZCAlZCAlZCIsJngxLCZ5MSwmeDIsJnkyKTsKCQkJCXByaW50ZigiJWRcbiIscXVlcnkoMSwwLG4tMSx4MSx4Mix5MSx5MikpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcHJpbnRmKCJcbiIpOwoJCQkJYnJlYWs7CgkJCX0KCQl9Cgl9Cn0KCQkJCg==