#include<stdio.h>
#include<stdlib.h>
#define maxsize 200000
typedef struct dui{
int front;
int rear;
int date[maxsize];
} Q;
void cha(Q* s, int x);
void chu(Q* s, int y);
void search(Q* s, int x);
void max(Q* s);
int main() {
Q* dd;
dd = (Q*)malloc(sizeof(Q));
dd->front = -1;
dd->rear = -1;
int n,m, q;
scanf("%d %d", &n, &q);
for (int i = 1; i <= q; i++) {
scanf("%d", &n);
if (n != 4) {
scanf("%d", &m);
if (n == 1)
cha(dd, m);
if (n == 2)
chu(dd, m);
if (n == 3)
search(dd, m);
}
else { max(dd); }
}
}
void cha(Q* s, int x) {
for (int i = 1,j=0; i <= x; i++,j++) {
s->date[j] = i;
s->rear++;
}
}
void chu(Q* s, int y) {
for (int i = 1; i <= y; i++) {
s->front++;
}
}
void search(Q* s, int x) {
printf("%d\n", s->date[s->front + x]);
}
void max(Q*s) {
int q = s->front+1;
int max = 0;
for (; q <= s->rear; q++) {
if (s->date[q] > max)
max = s->date[q];
}
printf("%d\n", max);
}