#include <iostream>
#include <cstdio>
using namespace std;
struct node{
int l,r;
};
node q[200005];
int l = 1,r = 0;
signed main()
{
// freopen("queue2.in","r",stdin);
// freopen("queue.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int c,t;
int op;
int x;
cin>>c>>t;
int maxn = -2147483648;
while(t--){
cin>>op;
if(op==1){
cin>>x;
q[++r] = {1,x};
}else if(op==2){
cin>>x;
while(l<=r&&x>0){
int a = q[l].l,b = q[l].r;
l++;
if(b-a+1<=x){
x-=(b-a+1);
}else{
int nr = a+x-1;
x-=(nr-a+1);
q[--l] = {nr+1,b};
break;
}
}
}else if(op==3){
cin>>x;
for(int i = l;i<=r;i++){
int a = q[i].l,b = q[i].r;
if(b-a+1<x){
x-=(b-a+1);
}else{
cout<<q[i].l+x-1<<endl;
break;
}
}
}else{
maxn = -2147483648;
for(int i = l;i<=r;i++){
maxn = max(maxn,q[i].r);
}
cout<<maxn<<endl;
}
}
return 0;
}
AC on #1,2,3,4,5,6,7,8,17,18。
其余 TLE。