#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;
}