#include<stdio.h>
#include<stdlib.h>

#define N 100000   //定义队列最大多少个

struct queue
{
    int data[N];//保存数据的数组
    int front;  //数据的开头
    int rear;  //数据的结尾
};
typedef struct queue Q; //给已经有的类型简化一下

void init(Q *myqueue)//初始化结构体
{
    myqueue->front = myqueue->rear = 0;
}

int isempty(Q *myqueue)//判断是否为空,1为空,0不为空
{
    if (myqueue->front==myqueue->rear)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
int enQueue(Q *myqueue, int num)//入队
{
    if (myqueue->rear == N)
    {
        printf("失败");
        return -1;
    }
    else
    {
        myqueue->data[myqueue->rear] = num;//赋值
        myqueue->rear += 1;//增加一个
    }
    return 0;
}

int DeQueue(Q *myqueue)//出队
{
    if (myqueue->front==myqueue->rear)
    {
        printf("失败");
        return -1;
    }
    else
    {
        myqueue->front += 1;
        return myqueue->data[myqueue->front-1];
    }
}


void printfQ(Q *myqueue) //打印队列元素
{
    if (myqueue->front==myqueue->rear)
    {
        printf("为空");
    }
    else
    {
        printf("%d\n",myqueue->data[myqueue->front]);
    }
}

int gethead(Q *myqueue)//获取开头的一个节点
{
    if (myqueue->front == myqueue->rear)
    {
        printf("为空");
        return -1;
    }
    else
    {
        return myqueue->data[myqueue->front];
    }
}


int main(){
    Q Q1;//创建
    init(&Q1);
    int n = 0;
    int m = 0;
    scanf("%d",&n);
    int i;
    char a[10] = {0};
    for(i = 0;i < n;i++){
        scanf("%s",a);
        if(strcmp(a,"push")==0){
            scanf("%d",&m);
            enQueue(&Q1, m);
            //printfQ(&Q1);
        }else{
            if(isempty(&Q1)==1){
                printf("error\n");
            }else{
                if(strcmp(a,"pop")==0){
                    printfQ(&Q1);
                    DeQueue(&Q1);
                }else if(strcmp(a,"front")==0){
                    printfQ(&Q1);
                }
            }

        }
        
    }
    return 0;
}