#include <bits/stdc++.h>
using namespace std;
#define fastIO ios_base::sync_with_stdio(0); cin.tie(0);
#define ll long long
#define pb push_back
#define all(x) x.begin(), x.end()
const int INF = 1e9;
const ll LLINF = 1e18;
const int N = 1030;
int a[N][N], fen[N][N];
int n;
void fenUpdate(int x, int y, int k){
for (int i=x; i<=n; i+=i&-i)
for (int j=y; j<=n; j+=j&-j)
fen[i][j]+=k;
}
int fenGet(int x, int y){
int ans = 0;
for (int i=x; i>0; i-=i&-i)
for (int j=y; j>0; j-=j&-j)
ans+=fen[i][j];
return ans;
}
int fenSum(int x1, int y1, int x2, int y2){
return fenGet(x2, y2)
- fenGet(x1-1, y2)
- fenGet(x2, y1-1)
+ fenGet(x1-1, y1-1);
}
int main(){
fastIO;
int t;
cin >> t;
while (t--){
cin >> n;
string s;
while (cin >> s){
if (s=="SET"){
int x, y, k;
cin >> x >> y >> k;
x++;
y++;
fenUpdate(x, y, -a[x][y]);
a[x][y] = k;
fenUpdate(x, y, a[x][y]);
}
else if (s=="SUM"){
int x1, x2, y1, y2;
cin >> x1 >> y1 >> x2 >> y2;
cout << fenSum(++x1, ++y1, ++x2, ++y2) << '\n';
}
else break;
}
cout << '\n';
for (int i=1; i<=n; i++) for (int j=1; j<=n; j++){
fen[i][j] = 0;
a[i][j] = 0;
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmFzdElPIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQoKY29uc3QgaW50IElORiA9IDFlOTsKY29uc3QgbGwgTExJTkYgPSAxZTE4Owpjb25zdCBpbnQgTiA9IDEwMzA7CgppbnQgYVtOXVtOXSwgZmVuW05dW05dOwppbnQgbjsKCnZvaWQgZmVuVXBkYXRlKGludCB4LCBpbnQgeSwgaW50IGspewogICAgZm9yIChpbnQgaT14OyBpPD1uOyBpKz1pJi1pKQogICAgICAgIGZvciAoaW50IGo9eTsgajw9bjsgais9aiYtaikKICAgICAgICAgICAgZmVuW2ldW2pdKz1rOwp9CgppbnQgZmVuR2V0KGludCB4LCBpbnQgeSl7CiAgICBpbnQgYW5zID0gMDsKICAgIGZvciAoaW50IGk9eDsgaT4wOyBpLT1pJi1pKQogICAgICAgIGZvciAoaW50IGo9eTsgaj4wOyBqLT1qJi1qKQogICAgICAgICAgICBhbnMrPWZlbltpXVtqXTsKICAgIHJldHVybiBhbnM7Cn0KCmludCBmZW5TdW0oaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKXsKICAgIHJldHVybiBmZW5HZXQoeDIsIHkyKQogICAgICAgICAgICAtIGZlbkdldCh4MS0xLCB5MikKICAgICAgICAgICAgLSBmZW5HZXQoeDIsIHkxLTEpCiAgICAgICAgICAgICsgZmVuR2V0KHgxLTEsIHkxLTEpOwp9CgppbnQgbWFpbigpewogICAgZmFzdElPOwoKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKXsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICBzdHJpbmcgczsKICAgICAgICB3aGlsZSAoY2luID4+IHMpewogICAgICAgICAgICBpZiAocz09IlNFVCIpewogICAgICAgICAgICAgICAgaW50IHgsIHksIGs7CiAgICAgICAgICAgICAgICBjaW4gPj4geCA+PiB5ID4+IGs7CiAgICAgICAgICAgICAgICB4Kys7CiAgICAgICAgICAgICAgICB5Kys7CiAgICAgICAgICAgICAgICBmZW5VcGRhdGUoeCwgeSwgLWFbeF1beV0pOwogICAgICAgICAgICAgICAgYVt4XVt5XSA9IGs7CiAgICAgICAgICAgICAgICBmZW5VcGRhdGUoeCwgeSwgYVt4XVt5XSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAocz09IlNVTSIpewogICAgICAgICAgICAgICAgaW50IHgxLCB4MiwgeTEsIHkyOwogICAgICAgICAgICAgICAgY2luID4+IHgxID4+IHkxID4+IHgyID4+IHkyOwogICAgICAgICAgICAgICAgY291dCA8PCBmZW5TdW0oKyt4MSwgKyt5MSwgKyt4MiwgKyt5MikgPDwgJ1xuJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8ICdcbic7CiAgICAgICAgZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspIGZvciAoaW50IGo9MTsgajw9bjsgaisrKXsKICAgICAgICAgICAgZmVuW2ldW2pdID0gMDsKICAgICAgICAgICAgYVtpXVtqXSA9IDA7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0=