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

//顺序栈
#define MAX_SIZE 100000

//构造栈的结构体
typedef struct
{
    int data[MAX_SIZE];
    int top;
} ArrayStack;

//初始化栈
void initStack(ArrayStack* stack)
{
    stack->top = -1;
}

//判断栈是否为空
bool isEmptyStack(ArrayStack* stack)
{
    return stack->top == -1;
}

//判断栈是否为满
bool isFullStack(ArrayStack* stack)
{
    return stack->top == MAX_SIZE - 1;
}

//入栈操作
void push(ArrayStack* stack, int x)
{
    if(isFullStack(stack))
    {
        printf("Full\n");
        return;
    }
    stack->top = stack->top + 1;
    stack->data[stack->top] = x;
}

//出栈操作
void pop(ArrayStack* stack)
{
    if(isEmptyStack(stack))
    {
        printf("Empty\n");
        return;
    }
    stack->top = stack-> top - 1;
}

//输出栈顶元素
int query(ArrayStack* stack)
{
    if(isEmptyStack(stack))
    {
        printf("Empty\n");
        return -1;
    }
    return stack->data[stack->top];
}

//计算栈中元素数量
int size(ArrayStack* stack)
{
    return stack->top + 1;
}

int main()
{
    int n = 0;//输入指令的次数
    int num = 0;//要入栈的元素
    char order[6] = {0};//输入的指令
    
    //申明并初始化栈
    ArrayStack stack;
    initStack(&stack);

    scanf("%d",&n);
    getchar();

    while(n--)
    {
        scanf("%5s",order);

        if(strcmp(order, "push") == 0)
        {
            scanf("%d",&num);
            push(&stack,num);
        }
        else if(strcmp(order, "pop") == 0)
        {
            pop(&stack);
        }
        else if (strcmp(order, "query") == 0)
        {
            int val = query(&stack);
            if(val != -1)
            {
                printf("%d\n",val);
            }
        }
        else if(strcmp(order, "size") == 0)
        {
            printf("%d\n",size(&stack));
        }
        getchar();
    }
    return 0;
}