神秘RE:#6,#8,#13,#16,其他点都AC了
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t,c;
ll x,k;
int op;
int idx=1,cnt;
ll s[214514],wow,res;
ll q[214514],ii=1,jj;
struct A
{
ll l,r,res;
} a[214514];
inline ll ask(ll x)
{
x+=wow;
int l=1,r=cnt,mid;
while(l<r)
{
mid=(l+r)>>1;
if(s[mid]<x)
l=mid;
else
r=mid-1;
if(mid==(l+r)>>1)
break;
}
while(s[mid]<x&&mid<=cnt-1)
mid++;
while(s[mid]>=x&&mid>=1)
mid--;
return x-s[mid];
}
int main()
{
//freopen("2.in.txt","r",stdin);
//freopen("2.txt","w",stdout);
ios::sync_with_stdio(0),cin.tie(0);
q[0]=-1e18-7;
cin>>c>>t;
while(t--)
{
cin>>op;
if(op==1)
{
cin>>x;
a[++cnt].l=1;
a[cnt].r=x;
a[cnt].res=x;
while(x>q[jj]&&jj>=ii)
jj--;
q[++jj]=x;
s[cnt]=s[cnt-1]+x;
/*for(int i=idx;i<=cnt;i++)
cout<<a[i].l<<" "<<a[i].r<<" "<<a[i].res<<" ";
cout<<endl;*/
}
else if(op==2)
{
cin>>x;
wow+=x;
for(int i=idx;i<=cnt;i++)
{
if(x>=a[i].res)
{
idx++;
x-=a[i].res;
if(a[i].r==q[ii])
ii++;
}
else
{
res=x+a[i].l;
a[i].l=res;
a[i].res=a[i].r-a[i].l+1;
break;
}
}
}
else if(op==3)
{
cin>>x;
cout<<ask(x)<<'\n';
}
else
cout<<q[ii]<<'\n';
}
return 0;
}