#include <stdio.h>
#define MaxSize 100001
typedef struct {
int date[MaxSize];
int front, rear;
}Squeue;
int EnQueue(Squeue* q, int e) {
if ((q->rear + 1) % MaxSize == q->front) {
return 0;
}
q->date[q->rear] = e;
q->rear = (q->rear + 1) % MaxSize;
return 1;
}
int DeQueue(Squeue* q) {
int date = q->date[q->front];
q->front = (q->front + 1) % MaxSize;
return date;
}
int main() {
int n = 0;
scanf("%d", &n);
Squeue q;
q.front = 0;
q.rear = 0;
while (n--) {
int k = 0;
int date = 0;
scanf("%d", &k);
switch (k) {
case 1:
scanf("%d", &date);
EnQueue(&q, date);
break;
case 2:
if (q.front == q.rear) {
printf("ERR_CANNOT_POP\n");
break;
}
else {
DeQueue(&q);
break;
}
case 3:
if (q.front == q.rear) {
printf("ERR_CANNOT_QUERY\n");
break;
}
else {
printf("%d\n", q.date[q.front]);
break;
}
case 4:
printf("%d\n", (q.rear + MaxSize - q.front) % MaxSize);
break;
}
}
return 0;
}