#include <stdio.h>
#include<stdbool.h>
#include <stdlib.h>
#include<string.h>
#define MAXSIZE 100000
struct SqStack{
int data[MAXSIZE];
int top;
}SqStack;
//初始化栈
bool init(struct SqStack* S);
//push操作(入栈)
bool push(struct SqStack* S,int x);
//pop操作(出栈)
bool pop(struct SqStack* S);
//top操作(输出栈顶数据)
bool top(struct SqStack S);
//处理输入的函数
void get(char* str);
int main() {
int n;
scanf("%d",&n);
int cot=0;
char str[7];
struct SqStack S;
init(&S);
while(cot<=n){
bool status;
get(str);
if(!strcmp(str,"push")){
int x;
scanf("%d",&x);
getchar();
push(&S,x);
}
else if(!strcmp(str,"pop")){
status=pop(&S);
if(!status)
printf("error\n");
}
else if(!strcmp(str,"top")){
status=top(S);
if(!status)
printf("error\n");
}
cot++;
}
return 0;
}
bool init(struct SqStack* S){
S->top=-1;
return true;
}
bool push(struct SqStack* S,int x){
bool flag;
if(S->top>MAXSIZE-1)
return false;
S->top++;
S->data[S->top]=x;
return true;
}
bool pop(struct SqStack* S){
if(S->top==-1)
return false;
printf("%d\n",S->data[S->top]);
S->top--;
return true;
}
bool top(struct SqStack S){
if(S.top==-1)
return false;
printf("%d\n",S.data[S.top]);
return true;
}
void get(char* str){
char ch;
int i=0;
while((ch=getchar())!='\n'){
if(ch==' ')
break;
str[i]=ch;
i++;
}
str[i]='\0';//字符串的结尾必须有'\0'
}