#include<iostream>
#include<set>
#define int long long
using namespace std;
#define Ed for(int i=h[x];~i;i=ne[i])
#define Ls(i,l,r) for(int i=l;i<r;++i)
#define Rs(i,l,r) for(int i=l;i>r;--i)
#define Le(i,l,r) for(int i=l;i<=r;++i)
#define Re(i,l,r) for(int i=l;i>=r;--i)
#define L(i,l) for(int i=0;i<l;++i)
#define E(i,l) for(int i=1;i<=l;++i)
#define W(t) while(t--)
#define Wh while
#define x first
#define y second
#define elif else if
const int N=200010;
int c,Q,cur,l=1;
typedef pair<int,int> pii;
pii q[N];
typedef long long ll;
ll sum[N],delta;
multiset<int>s;
signed main(){
#ifdef ONLINE_JUDGE
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
#endif
cin>>c>>Q;
E(i, Q){
int op;
cin>>op;
if(op==1){
int x;
cin>>x;
q[++cur]={1,x};
sum[cur]=sum[cur-1]+x;
s.insert(x);
}
elif(op==2){
int y,sub;
cin>>y;
Wh(y&&y>=(sub=q[l].y-q[l].x+1))y-=sub,s.erase(q[l++].y),delta+=sub;
if(l<=cur)q[l].x+=y,delta+=y;
}
elif(op==3){
ll z;
cin>>z;
z+=delta;
int pos=lower_bound(sum+1,sum+cur+1,z)-sum;
z-=sum[pos-1];
cout<<z<<'\n';
}
else
cout<<*(s.rbegin())<<'\n';
}
return 0;
}