#include<bits/stdc++.h>
using namespace std;
#define fast ios::sync_with_stdio(false);cin.tie(0)
#define pb push_back
#define digit(x) floor(log10(x))+1
#define mod 1000000007
typedef long long ll;
typedef long double ld;
typedef vector<vector<ll>> matrix;
typedef vector<ll> arr;
typedef vector<string> vs;
typedef vector<pair<ll,ll>> pv;
#define in1(x) scanf("%lld",&x)
#define in2(x,y) scanf("%lld %lld",&x,&y)
#define in3(x,y,z) scanf("%lld %lld %lld",&x,&y,&z)
#define all(x) x.begin(),x.end()
#define debug(x) cerr << #x << " is " << x << endl;
ll bit[2000000]={0};
struct Point{
ll x,y,z;
};
void update(int i,ll val,ll n){
ll s=bit[i];
while(i<=n){
bit[i]+=val-s;
i+=(i&(-i));
}
}
ll query(ll x){
ll ans=0;
while(x>0){
ans+=bit[x];
x-=(x&(-x));
}
return ans;
}
int main(){
fast;
ll t;
cin>>t;
while(t--){
ll n,q;
memset(bit,0,sizeof(bit));
cin>>n>>q;
ll q1=q;
set<tuple<ll,ll,ll>>al;
vector<pair<tuple<ll,ll,ll>,ll>>xq;
map<tuple<ll,ll,ll>,ll>m;
ll countx=1;
vector<pair<tuple<ll,ll,ll>,tuple<ll,ll,ll>>>qu;
vector<bool>h;
while(q--){
string s;
cin>>s;
if(s=="UPDATE"){
ll w,x,y,z;
h.pb(1);
cin>>x>>y>>z>>w;
al.insert(make_tuple(x,y,z));
xq.push_back(make_pair(make_tuple(x,y,z),w));
}else{
ll x1,x2,y1,y2,z1,z2;
h.pb(0);
cin>>x1>>y1>>z1>>x2>>y2>>z2;
al.insert(make_tuple(x1,y1,z1));
al.insert(make_tuple(x2,y2,z2));
qu.push_back(make_pair(make_tuple(x1,y1,z1),make_tuple(x2,y2,z2)));
}
}
for(auto i : al){
m[i]=countx++;
}
ll i=0,j=0,p=0;
while(q1--){
if(h[i]==1){
tuple<ll,ll,ll>o=xq[j].first;
update(m[o],xq[j].second,countx);
j++;
}else{
cout<<query(m[qu[p].second])-query(m[qu[p].first]-1)<<endl;
p++;
}
i++;
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBmYXN0IGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKDApCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZGlnaXQoeCkgZmxvb3IobG9nMTAoeCkpKzEKI2RlZmluZSBtb2QgMTAwMDAwMDAwNwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsKdHlwZWRlZiB2ZWN0b3I8dmVjdG9yPGxsPj4gbWF0cml4Owp0eXBlZGVmIHZlY3RvcjxsbD4gYXJyOwp0eXBlZGVmIHZlY3RvcjxzdHJpbmc+IHZzOwp0eXBlZGVmIHZlY3RvcjxwYWlyPGxsLGxsPj4gcHY7CiNkZWZpbmUgaW4xKHgpIHNjYW5mKCIlbGxkIiwmeCkKI2RlZmluZSBpbjIoeCx5KSBzY2FuZigiJWxsZCAlbGxkIiwmeCwmeSkKI2RlZmluZSBpbjMoeCx5LHopIHNjYW5mKCIlbGxkICVsbGQgJWxsZCIsJngsJnksJnopCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCiNkZWZpbmUgZGVidWcoeCkgY2VyciA8PCAjeCA8PCAiIGlzICIgPDwgeCA8PCBlbmRsOwpsbCBiaXRbMjAwMDAwMF09ezB9OwpzdHJ1Y3QgUG9pbnR7CiAgICBsbCB4LHksejsKfTsKdm9pZCB1cGRhdGUoaW50IGksbGwgdmFsLGxsIG4pewogICAgbGwgcz1iaXRbaV07CiAgICB3aGlsZShpPD1uKXsKICAgICAgICBiaXRbaV0rPXZhbC1zOwogICAgICAgIGkrPShpJigtaSkpOwogICAgfQp9CmxsIHF1ZXJ5KGxsIHgpewogICAgbGwgYW5zPTA7CiAgICB3aGlsZSh4PjApewogICAgICAgIGFucys9Yml0W3hdOwogICAgICAgIHgtPSh4JigteCkpOwogICAgfQogICAgcmV0dXJuIGFuczsKfQppbnQgbWFpbigpewogICAgZmFzdDsKICAgIGxsIHQ7CiAgICBjaW4+PnQ7CiAgICB3aGlsZSh0LS0pewogICAgICAgIGxsIG4scTsKICAgICAgICBtZW1zZXQoYml0LDAsc2l6ZW9mKGJpdCkpOwogICAgICAgIGNpbj4+bj4+cTsKICAgICAgICBsbCBxMT1xOwogICAgICAgIHNldDx0dXBsZTxsbCxsbCxsbD4+YWw7CiAgICAgICAgdmVjdG9yPHBhaXI8dHVwbGU8bGwsbGwsbGw+LGxsPj54cTsKICAgICAgICBtYXA8dHVwbGU8bGwsbGwsbGw+LGxsPm07CiAgICAgICAgbGwgY291bnR4PTE7CiAgICAgICAgdmVjdG9yPHBhaXI8dHVwbGU8bGwsbGwsbGw+LHR1cGxlPGxsLGxsLGxsPj4+cXU7CiAgICAgICAgdmVjdG9yPGJvb2w+aDsKICAgICAgICB3aGlsZShxLS0pewogICAgICAgICAgICBzdHJpbmcgczsKICAgICAgICAgICAgY2luPj5zOwogICAgICAgICAgICBpZihzPT0iVVBEQVRFIil7CiAgICAgICAgICAgICAgICBsbCB3LHgseSx6OwogICAgICAgICAgICAgICAgaC5wYigxKTsKICAgICAgICAgICAgICAgIGNpbj4+eD4+eT4+ej4+dzsKICAgICAgICAgICAgICAgIGFsLmluc2VydChtYWtlX3R1cGxlKHgseSx6KSk7CiAgICAgICAgICAgICAgICB4cS5wdXNoX2JhY2sobWFrZV9wYWlyKG1ha2VfdHVwbGUoeCx5LHopLHcpKTsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBsbCB4MSx4Mix5MSx5Mix6MSx6MjsKICAgICAgICAgICAgICAgIGgucGIoMCk7CiAgICAgICAgICAgICAgICBjaW4+PngxPj55MT4+ejE+PngyPj55Mj4+ejI7CiAgICAgICAgICAgICAgICBhbC5pbnNlcnQobWFrZV90dXBsZSh4MSx5MSx6MSkpOwogICAgICAgICAgICAgICAgYWwuaW5zZXJ0KG1ha2VfdHVwbGUoeDIseTIsejIpKTsKICAgICAgICAgICAgICAgIHF1LnB1c2hfYmFjayhtYWtlX3BhaXIobWFrZV90dXBsZSh4MSx5MSx6MSksbWFrZV90dXBsZSh4Mix5Mix6MikpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmb3IoYXV0byBpIDogYWwpewogICAgICAgICAgICBtW2ldPWNvdW50eCsrOwogICAgICAgIH0KICAgICAgICBsbCBpPTAsaj0wLHA9MDsKICAgICAgICB3aGlsZShxMS0tKXsKICAgICAgICAgICAgaWYoaFtpXT09MSl7CiAgICAgICAgICAgICAgICB0dXBsZTxsbCxsbCxsbD5vPXhxW2pdLmZpcnN0OwogICAgICAgICAgICAgICAgdXBkYXRlKG1bb10seHFbal0uc2Vjb25kLGNvdW50eCk7CiAgICAgICAgICAgICAgICBqKys7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgY291dDw8cXVlcnkobVtxdVtwXS5zZWNvbmRdKS1xdWVyeShtW3F1W3BdLmZpcnN0XS0xKTw8ZW5kbDsKICAgICAgICAgICAgICAgIHArKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpKys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0=