#include <fstream>
using namespace std;
ifstream fin("hotel.in");
ofstream fout("hotel.out");
const int Nmax = 100005;
struct arbint{
int st;
int dr;
int mid;
int lazy;
} aint[4*Nmax];
void build(int node, int st, int dr){
if(st == dr){
aint[node].st = 1;
aint[node].dr = 1;
aint[node].mid = 1;
aint[node].lazy = -1;
return;
}
int mid = (st+dr)/2;
build(node+node, st, mid);
build(node+node+1, mid+1, dr);
aint[node].st = aint[node].dr = aint[node].mid = dr-st+1; aint[node].lazy = -1;
}
void update(int node, int st, int dr, int x, int y, int val){
if(st == x && dr == y){
if(val == 0){
aint[node].st = aint[node].dr = aint[node].mid = dr-st+1;
aint[node].lazy = 0;
}
else{
aint[node].st = aint[node].dr = aint[node].mid = 0;
aint[node].lazy = 1;
}
return;
}
int mid = (st+dr)/2;
if(aint[node].lazy == 0){
aint[node+node].st = aint[node+node].dr = aint[node+node].mid = mid-st+1;
aint[node+node+1].st = aint[node+node+1].dr = aint[node+node+1].mid = dr-mid;
aint[node+node].lazy = aint[node+node+1].lazy = 0;
aint[node].lazy = -1;
}
else if(aint[node].lazy == 1){
aint[node+node].st = aint[node+node].dr = aint[node+node].mid = 0;
aint[node+node+1].st = aint[node+node+1].dr = aint[node+node+1].mid = 0;
aint[node+node].lazy = aint[node+node+1].lazy = 1;
aint[node].lazy = -1;
}
if(y<=mid)
update(node+node,st,mid,x,y,val);
else if(x>mid)
update(node+node+1,mid+1,dr,x,y,val);
else{
update(node+node,st,mid,x,mid,val);
update(node+node+1,mid+1,dr,mid+1,y,val);
}
aint[node].mid = max(aint[node+node].mid, aint[node+node+1].mid);
aint[node].mid = max(aint[node].mid, aint[node+node].dr+aint[node+node+1].st);
aint[node].st = aint[node+node].st;
if(aint[node+node].st == mid-st+1)
aint[node].st+=aint[node+node+1].st;
aint[node].dr = aint[node+node+1].dr;
if(aint[node+node+1].dr == dr-mid)
aint[node].dr+=aint[node+node].dr;
}
int main()
{
int n,p;
fin >> n >> p;
build(1,1,n);
for(int i=1;i<=p;i++){
int c;
fin >> c;
if(c == 3)
fout << aint[1].mid << '\n';
else{
int x,y;
fin >> x >> y;
y = x+y-1;
if(c == 1)
update(1,1,n,x,y,1);
else if(c == 2)
update(1,1,n,x,y,0);
}
}
return 0;
}