#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int T,m,n,a[N],len,s[N],q[N],l,r;
int query(int x){
x+=len;
int l=1,r=n;
while(l<r){
int mid=l+r+1>>1;
if(s[mid]<=x) l=mid;
else r=mid-1;
}
return s[l]==x?a[l]:x-s[l];
}
signed main(){
scanf("%lld%lld",&T,&m);int opt,x;
while(m--){
scanf("%lld",&opt);
if(opt==1){
scanf("%lld",&x);
a[++n]=x;
s[n]=s[n-1]+a[n];
while(l<r&&a[q[r]]<a[n]) r--;
q[++r]=n;
}
else if(opt==2){
scanf("%lld",&x),len+=x;
while(l<r&&s[q[l]]<=len) l++;
}
else if(opt==3) scanf("%lld",&x),printf("%lld\n",query(x));
else printf("%lld\n",a[q[l]]);
}
return 0;
}
用了单调队列+二分,怎么Wa了