#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
#define pii pair<int,int>
#define x first
#define y second
ll c,q,top=0,di=0,ans_p=-1;
ll mm=-1;
vector<pii> sb;
bool is_change=1;
int main(){
cin>>c>>q;
while(q--){
int op;
scanf("%d",&op);
if(op==1){
ll now_x;
scanf("%lld",&now_x);
pii now_n;
now_n.x=now_n.y=now_x;
sb.push_back(now_n);
di++;
is_change=1;
mm=max(mm,now_x);
}
else if(op==2){
ll now_x;
scanf("%lld",&now_x);
while(sb[top].x<=now_x){
now_x-=sb[top].x;
top++;
}
sb[top].x-=now_x;
is_change=1;
}
else if(op==3){
ll now_x;
scanf("%lld",&now_x);
ll i=top,j=0;
while(j+sb[i].x<now_x){
j+=sb[i].x;
i++;
}
printf("%lld\n",now_x-j+sb[i].y-sb[i].x);
}
else{
if(is_change&&ans_p<top){
ll i=top;
mm=-1;
while(i<di){
if(sb[i].y*1ll>=mm){
mm=sb[i].y*1ll;
ans_p=i;
}
i++;
}
is_change=0;
}
printf("%lld\n",mm);
}
}
}
无比憋屈的优化失败了