#include <cstdio>
#define N 400002
int m[N],l[N],r[N],n,q;
inline int mx(int a,int b) { return (a>b ? a : b) ; }
void rez(int p,int a,int b,int x,int y)
{
if ((x==a) && (y==b)) {m[p]=l[p]=r[p]=q*(y-x+1);return ;}
int mij=(a+b)/2;
if (m[p]==0)
m[p*2]=l[p*2]=r[p*2]=l[p*2+1]=m[p*2+1]=r[p*2+1]; else
if (m[p]==b-a+1)
{
m[p*2]=l[p*2]=r[p*2]=mij-a+1;
l[p*2+1]=m[p*2+1]=r[p*2+1]=b-mij;
}
if (x>mij) rez(p*2+1,mij+1,b,x,y); else
if (y<=mij) rez(p*2,a,mij,x,y); else
rez(p*2,a,mij,x,mij),rez(p*2+1,mij+1,b,mij+1,y);
l[p]=l[p*2];r[p]=r[p*2+1];
if (l[p]==mij-a+1) l[p]+=l[p*2+1];
if (r[p]==b-mij) r[p]+=r[p*2];
m[p]=mx(r[p*2]+l[p*2+1],mx(m[p*2],m[p*2+1]));
}
int main()
{
int k,a,b;
freopen("hotel.in","r",stdin);
freopen("hotel.out","w",stdout);
scanf("%d %d ",&n,&k);
m[1]=l[1]=r[1]=n;
while (k--)
{
scanf("%d",&a);
if (a==3) printf("%d\n",m[1]); else
if (a==1)
{
scanf("%d %d",&a,&b);
b+=a-1;q=0;
rez(1,1,n,a,b);
} else
{
scanf("%d %d",&a,&b);
b+=a-1;q=1;
rez(1,1,n,a,b);
}
}
return 0;
}