#include <stdio.h>
#include<stdlib.h>
#define INITIAL_COUNT 1000

int main() {
    int* queue = NULL;
    int front = 0, rear = 0, count = 0;
    int n;
    scanf("%d", &n);
    getchar();
    count = INITIAL_COUNT;
    queue = (int*)malloc(count * sizeof(int));
    if (queue == NULL) {
        free(queue);
        return 1;
    }
    for (int i = 0; i < n; i++) {
        char line[20];
        int operation;
        if (fgets(line, sizeof(line), stdin) == NULL) {
            continue;
        }
        sscanf(line, "%d", &operation);

        switch (operation) {
            case 1: {
                    int x;
                    sscanf(line, "%d %d", &operation, &x);
                    if (rear + 1 >= count) {
                        count = count * 2;
                        int* new_queue = (int*)realloc(queue, count * sizeof(int));
                        if (new_queue == NULL) {
                            free(queue);
                            return 1;
                        }
                        queue = new_queue;

                    }
                    queue[rear++] = x;
                    break;
                }
            case 2:
                if (front == rear) {
                    printf("ERR_CANNOT_POP\n");

                } else {
                    //printf("%d\n", queue[front++]);
                    front++;

                }
                break;
            case 3:
                if (front == rear) {
                    printf("ERR_CANNOT_QUERY\n");
                } else {
                    printf("%d\n", queue[front]);
                }
                break;
            case 4: {



                    int size;
                if (front <= rear) {
                    size = rear - front;
                } 

                else {
                    size = (count - front) + rear;
                }
    
                printf("%d\n", size);
                break;
                }

        }

    }
    free(queue);
    return 0;
}