#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;
}