#include<bits/stdc++.h>
using namespace std;
long long q[220000],l1,r1;
struct lyz
{
long long aaa;
long long sizee;
}a[200000+10];
long long head,tail;
long long qian[200000+10];
void cha()
{
long long r;
cin>>r;
a[++head].aaa=r;
a[head].sizee=r;
qian[head]=qian[head-1]+a[head].sizee;
while(l1<=r1&&q[l1]<=r)l1++;
while(l1<=r1&&q[r1]<=r)r1--;
q[++r1]=r;
}
void tan()
{
long long r;
scanf("%lld",&r);
while(r>0)
{
r-=a[tail+1].sizee;
while(l1<=r1&&q[l1]==a[tail].aaa)l1++;
while(l1<=r1&&q[r1]==a[tail].aaa)r1--;
tail++;
}
tail--;
r+=a[tail+1].sizee;
a[tail+1].sizee-=r;
}
void er_fen(long long l,long long r,long long k)
{ long long mid=(l+r)/2;
if(l==r)
{
cout<<k<<endl;
}
else
{
if(k<=qian[mid]-qian[l-1]) er_fen(l,mid,k);
else er_fen(mid+1,r,k-qian[mid]+qian[l-1]);
}
}
void wen()
{
long long r;
scanf("%lld",&r);
if(r<=a[tail+1].sizee)
{
cout<<a[tail+1].aaa-a[tail+1].sizee+r<<endl;
}
else
er_fen(tail+2,head,r-a[tail+1].sizee);
}
void maxx()
{
cout<<q[l1]<<endl;
}
int main()
{
long long T;
cin>>T;
cin>>T;
for(long long i=1;i<=T;i++)
{
int b;
scanf("%d",&b);
if(b==1) cha();
if(b==2) tan();
if(b==3) wen();
if(b==4) maxx();
}
}