#include <iostream>
#include <fstream>
#define Nmax 300000
using namespace std;
ifstream fin("hotel.in");
ofstream fout("hotel.out");
struct Adi
{
int max_l,max_ll,max_lr,sum;
};
Adi AI[Nmax];
int N,P;
void Build(int Nod,int L,int R)
{
int mid=(L+R)/2;
AI[Nod].max_l=R-L+1;
AI[Nod].max_ll=AI[Nod].max_l;
AI[Nod].max_lr=AI[Nod].max_l;
AI[Nod].sum=AI[Nod].max_l;
if(L==R)
return;
int son1=Nod*2,son2=Nod*2+1;
Build(son1,L,mid);
Build(son2,mid+1,R);
}
void Up1(int Nod,int L,int R,int lm,int rm)
{
int mid=(L+R)/2;
if(L>=lm && R<=rm)
{
AI[Nod].max_l=0;
AI[Nod].max_ll=0;
AI[Nod].max_lr=0;
return;
}
int son1=Nod*2,son2=Nod*2+1;
if(AI[Nod].max_l==AI[Nod].sum)
{
AI[son1].max_l=AI[son1].max_ll=AI[son1].max_lr=AI[son1].sum;
AI[son2].max_l=AI[son2].max_ll=AI[son2].max_lr=AI[son2].sum;
}
if(lm<=mid)
Up1(son1,L,mid,lm,rm);
if(rm>mid)
Up1(son2,mid+1,R,lm,rm);
AI[Nod].max_l=max(AI[son1].max_l,max(AI[son2].max_l,AI[son1].max_lr+AI[son2].max_ll));
AI[Nod].max_ll=AI[son1].max_ll;
if(AI[Nod].max_ll==AI[son1].sum)
AI[Nod].max_ll+=AI[son2].max_ll;
AI[Nod].max_lr=AI[son2].max_lr;
if(AI[Nod].max_lr==AI[son2].sum)
AI[Nod].max_lr+=AI[son1].max_lr;
}
void Up2(int Nod,int L,int R,int lm,int rm)
{
int mid=(L+R)/2;
if(L>=lm && R<=rm)
{
AI[Nod].max_l=AI[Nod].sum;
AI[Nod].max_ll=AI[Nod].sum;
AI[Nod].max_lr=AI[Nod].sum;
return;
}
int son1=Nod*2,son2=Nod*2+1;
if(AI[Nod].max_l==0)
{
AI[son1].max_l=AI[son1].max_ll=AI[son1].max_lr=0;
AI[son2].max_l=AI[son2].max_ll=AI[son2].max_lr=0;
}
if(lm<=mid)
Up2(son1,L,mid,lm,rm);
if(rm>mid)
Up2(son2,mid+1,R,lm,rm);
AI[Nod].max_l=max(AI[son1].max_l,max(AI[son2].max_l,AI[son1].max_lr+AI[son2].max_ll));
AI[Nod].max_ll=AI[son1].max_ll;
if(AI[Nod].max_ll==AI[son1].sum)
AI[Nod].max_ll+=AI[son2].max_ll;
AI[Nod].max_lr=AI[son2].max_lr;
if(AI[Nod].max_lr==AI[son2].sum)
AI[Nod].max_lr+=AI[son1].max_lr;
}
int main()
{
fin>>N>>P;
Build(1,1,N);
for(int i=1;i<=P;i++)
{
int c,x,y;
fin>>c;
switch(c)
{
case 1:
fin>>x>>y;
Up1(1,1,N,x,x+y-1);
break;
case 2:
fin>>x>>y;
Up2(1,1,N,x,x+y-1);
break;
case 3:
fout<<AI[1].max_l<<"\n";
break;
}
}
return 0;
}