#include <stdio.h>
#include <stdbool.h>

#define MAX_SIZE 100001

//循环队列

typedef struct
{
    int data[MAX_SIZE];
    int front; //队首指针
    int rear; //队尾指针
} Queue;

//typedef struct
//{
//    Node* front;
//    Node* rear;
//} Queue;

//初始化队列
void initQueue(Queue* q)
{
    q->front = q->rear = 0;
}

//判断队列是否为空
bool isEmpty(Queue* q)
{
    return q->front == q->rear;
}

//判断队列是否为满
bool isFull(Queue* q)
{
    return (q->rear + 1) % MAX_SIZE == q->front;
}

//入队
int enqueue(Queue* q, int data)
{
    if(isFull(q))
    {
        printf("Queue is full\n");
        return -1;
    }
    q->data[q->rear] = data;
    q->rear = (q->rear + 1) % MAX_SIZE;
    return 0;
}

//出队
int dequeue(Queue* q)
{
    int temp;
    if(isEmpty(q))
    {
        printf("Queue is empty!\n");
        return -1;
    }
    temp = q->data[q->front];
    q->front = (q->front + 1) % MAX_SIZE;
    return temp;
}

//获取队首元素
int peekFront(Queue* q)
{
    if(isEmpty(q))
    {
        printf("Queue is Empty!\n");
        return -1;
    }
    return q->data[q->front];
}

//计算队列当前元素数量
int lengthQueue(Queue* q)
{
    if(q->rear >= q->front)
    {
        return q->rear - q->front;
    }
    else
    {
        return q->rear - q->front + MAX_SIZE;
    }
}

//释放队列内存
void freeQueue(Queue* q)
{
    while(!isEmpty(q))
    {
        int val;
        dequeue(q);
    }
}

int main()
{
    int n = 0;//操作总数
    int order = 0;//操作指令
    int num = 0;//要入队输入的数据
    Queue q;
    initQueue(&q);

    scanf("%d",&n);
    
    while(n--)
    {
        scanf("%d",&order);
        if(order == 1)
        {
            scanf("%d",&num);
            enqueue(&q, num);
        }
        else if(order == 2)
        {
            if(isEmpty(&q))
            {
                printf("ERR_CANNOT_POP\n");
            }
            else
            {
                dequeue(&q);
            }
        }
        else if(order == 3)
        {
            if(isEmpty(&q))
            {
                printf("ERR_CANNOT_QUERY\n");
            }
            else
            {
                printf("%d\n",peekFront(&q));
            }
        }
        else if(order == 4)
        {
            printf("%d\n",lengthQueue(&q));
        }
    }

    return 0;
}