#include <fstream>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int NMAX = 110;
int T, N, M, X1, Y1, Z1, X2, Y2, Z2, Val[NMAX][NMAX][NMAX];
long long Aib[NMAX][NMAX][NMAX];
char Type[20];
int LSB(int X)
{
return (X & (X - 1)) ^ X;
}
void Update(int X, int Y, int Z, int Val)
{
for(int i = Y; i <= N; i += LSB(i))
for(int j = Z; j <= N; j += LSB(j))
Aib[X][i][j] += Val;
}
long long Query(int X, int Y, int Z)
{
long long Now = 0;
for(int i = Y; i; i -= LSB(i))
for(int j = Z; j; j -= LSB(j))
Now += Aib[X][i][j];
return Now;
}
long long Sum(int X1, int Y1, int Z1, int X2, int Y2, int Z2)
{
long long Ans = 0;
for(int i = X1; i <= X2; ++ i)
Ans += (Query(i, Y2, Z2) - Query(i, Y1 - 1, Z2) - Query(i, Y2, Z1 - 1) + Query(i, Y1 - 1, Z1 - 1));
return Ans;
}
int main()
{
cin >> T;
for(; T; T --)
{
for(int i = 1; i <= N; ++ i)
for(int j = 1; j <= N; ++ j)
for(int k = 1; k <= N; ++ k)
Aib[i][j][k] = Val[i][j][k] = 0;
cin >> N >> M;
for(int i = 1; i <= M; ++ i)
{
cin >> Type;
if(Type[0] == 'U')
{
int W;
cin >> X1 >> Y1 >> Z1 >> W;
Update(X1, Y1, Z1, -Val[X1][Y1][Z1]);
Update(X1, Y1, Z1, W);
Val[X1][Y1][Z1] = W;
}else
{
cin >> X1 >> Y1 >> Z1 >> X2 >> Y2 >> Z2;
cout << Sum(X1, Y1, Z1, X2, Y2, Z2) << "\n";
}
}
}
}
I2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTk1BWCA9IDExMDsKCmludCBULCBOLCBNLCBYMSwgWTEsIFoxLCBYMiwgWTIsIFoyLCBWYWxbTk1BWF1bTk1BWF1bTk1BWF07CmxvbmcgbG9uZyBBaWJbTk1BWF1bTk1BWF1bTk1BWF07CmNoYXIgVHlwZVsyMF07CgppbnQgTFNCKGludCBYKQp7CiAgICByZXR1cm4gKFggJiAoWCAtIDEpKSBeIFg7Cn0KCnZvaWQgVXBkYXRlKGludCBYLCBpbnQgWSwgaW50IFosIGludCBWYWwpCnsKICAgIGZvcihpbnQgaSA9IFk7IGkgPD0gTjsgaSArPSBMU0IoaSkpCiAgICAgICAgZm9yKGludCBqID0gWjsgaiA8PSBOOyBqICs9IExTQihqKSkKICAgICAgICAgICAgQWliW1hdW2ldW2pdICs9IFZhbDsKfQoKbG9uZyBsb25nIFF1ZXJ5KGludCBYLCBpbnQgWSwgaW50IFopCnsKICAgIGxvbmcgbG9uZyBOb3cgPSAwOwogICAgZm9yKGludCBpID0gWTsgaTsgaSAtPSBMU0IoaSkpCiAgICAgICAgZm9yKGludCBqID0gWjsgajsgaiAtPSBMU0IoaikpCiAgICAgICAgICAgIE5vdyArPSBBaWJbWF1baV1bal07CiAgICByZXR1cm4gTm93Owp9Cgpsb25nIGxvbmcgU3VtKGludCBYMSwgaW50IFkxLCBpbnQgWjEsIGludCBYMiwgaW50IFkyLCBpbnQgWjIpCnsKICAgIGxvbmcgbG9uZyBBbnMgPSAwOwogICAgZm9yKGludCBpID0gWDE7IGkgPD0gWDI7ICsrIGkpCiAgICAgICAgQW5zICs9IChRdWVyeShpLCBZMiwgWjIpIC0gUXVlcnkoaSwgWTEgLSAxLCBaMikgLSBRdWVyeShpLCBZMiwgWjEgLSAxKSArIFF1ZXJ5KGksIFkxIC0gMSwgWjEgLSAxKSk7CiAgICByZXR1cm4gQW5zOwp9CgppbnQgbWFpbigpCnsKICAgIGNpbiA+PiBUOwoKICAgIGZvcig7IFQ7IFQgLS0pCiAgICB7CiAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBOOyArKyBpKQogICAgICAgICAgICBmb3IoaW50IGogPSAxOyBqIDw9IE47ICsrIGopCiAgICAgICAgICAgICAgICBmb3IoaW50IGsgPSAxOyBrIDw9IE47ICsrIGspCiAgICAgICAgICAgICAgICAgICAgQWliW2ldW2pdW2tdID0gVmFsW2ldW2pdW2tdID0gMDsKCiAgICAgICAgY2luID4+IE4gPj4gTTsKICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IE07ICsrIGkpCiAgICAgICAgewogICAgICAgICAgICBjaW4gPj4gVHlwZTsKICAgICAgICAgICAgaWYoVHlwZVswXSA9PSAnVScpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCBXOwogICAgICAgICAgICAgICAgY2luID4+IFgxID4+IFkxID4+IFoxID4+IFc7CiAgICAgICAgICAgICAgICBVcGRhdGUoWDEsIFkxLCBaMSwgLVZhbFtYMV1bWTFdW1oxXSk7CiAgICAgICAgICAgICAgICBVcGRhdGUoWDEsIFkxLCBaMSwgVyk7CiAgICAgICAgICAgICAgICBWYWxbWDFdW1kxXVtaMV0gPSBXOwogICAgICAgICAgICB9ZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjaW4gPj4gWDEgPj4gWTEgPj4gWjEgPj4gWDIgPj4gWTIgPj4gWjI7CiAgICAgICAgICAgICAgICBjb3V0IDw8IFN1bShYMSwgWTEsIFoxLCBYMiwgWTIsIFoyKSA8PCAiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9