#include<bits/stdc++.h>
#define ll l
#define lr ((l+r)>>1)
#define rl ((l+r)>>1)+1
#define rr r
#define ls id<<1
#define rs id<<1|1
using namespace std;
const int N=5e4+5;
struct T{
int la;
int lo;
int ma;
int MFL;
int MFR;
}tr[N<<2];
void up_change(int id){
T *F=&tr[id];
T *L=&tr[ls];
T *R=&tr[rs];
F->ma=max(max(L->ma,R->ma),L->MFR+R->MFL);
F->MFL=L->MFL+(L->MFL==L->lo?R->MFL:0);
F->MFR=R->MFR+(R->MFR==R->lo?L->MFR:0);
return ;
}
void down_change(int id){
T *F=&tr[id];
T *L=&tr[ls];
T *R=&tr[rs];
if(!F->la)return ;
L->la=R->la=F->la;
L->ma=L->MFL=L->MFR=(F->la==1?0:L->lo);
R->ma=R->MFL=R->MFR=(F->la==1?0:R->lo);
F->la=0;
return ;
}
void build(int l,int r,int id=1){
tr[id].lo=tr[id].ma=tr[id].MFL=tr[id].MFR=r-l+1;
if(l==r)return ;
build(ll,lr,ls);
build(rl,rr,rs);
return ;
}
void change(int l,int r,int wl,int wr,int wish,int id=1){
if(wl<=l&&r<=wr){
T *F=&tr[id];
F->ma=F->MFL=F->MFR=(wish==1?0:F->lo);
F->la=wish;
return ;
}
down_change(id);
if(wl<=lr)change(ll,lr,wl,wr,wish,ls);
if(rl<=wr)change(rl,rr,wl,wr,wish,rs);
up_change(id);
return ;
}
int find(int l,int r,int wish,int id=1){
if(l==r)return l;
T *L=&tr[ls];
T *R=&tr[rs];
if(L->ma>=wish)return find(ll,lr,wish,ls);
if(L->MFR+R->MFL>=wish)return lr-L->MFR+1;
if(R->ma>=wish)return find(rl,rr,wish,rs);
return -1;
}
int main(){
int n,m;
cin>>n>>m;
build(1,n);
while(m--){
int id;
cin>>id;
if(id==1){
int x;
cin>>x;
int l=find(1,n,x);
if(l==-1)cout<<"0\n";
else cout<<l<<"\n",change(1,n,l,l+x-1,1);
}else{
int x,y;
cin>>x>>y;
change(1,n,x,x+y-1,2);
}
}
return 0;
}