#include <bits/stdc++.h>
using namespace std;
const int MAX = 100000;
bool downwards(int a, int b){
    return a>b;
}
long long n, q, points[MAX];
bool divider[MAX];
int segTree[4*MAX];
int add(int ind, int mi, int ma, int p){
    if(mi>=ma){
        segTree[ind]++;
        return segTree[ind];
    }
    if(p<mi || p>ma){
        return 0;
    }
    int mid=(mi+ma)/2;
    segTree[ind]=add(2*ind+1, 0, mid, p)+add(2*ind+2, mid+1, ma, p);
    return segTree[ind];
}
int find(int ind, int mi, int ma, int l, int r){
    if(mi>=ma){
        return segTree[ind];
    }
    if(r<mi || l>ma){
        return 0;
    }
    int mid=(mi+ma)/2;
    segTree[ind]=find(2*ind+1, 0, mid, l, r)+find(2*ind+2, mid+1, ma, l, r);
    return segTree[ind];
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin>>n>>q;
for(int i=0;i<q;i++){
    int t;
    cin>>t;
    if(t==1 || t==2){
        int p;
        cin>>p;
        p--;
        divider[p]=!divider[p];
        add(0, 0, n-2, p);
    }
    if(t==3){
        long long c, a;
        cin>>c>>a;
        c--;
        points[c]+=a;
    }
    if(t==4){
        int l, r;
        cin>>l>>r;
        l--;
        r--;
        int num = find(0, 0, n-2, 0, l-1);
        bool ok;
        if(num%2==0){
            ok=false;
        }else{
            ok=true;
        }
        long long ma=0, sum=0;
        for(int i=l;i<=r;i++){
            if(ok){
                if(points[i]>ma){
                    ma=points[i];
                }
            }
            if(divider[i]){
                ok=!ok;
                sum=sum+ma;
                ma=0;
            }
        }
        sum=sum+ma;
        cout<<sum<<"\n";
    }
}
return 0;
}


