#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STACK_SIZE 100000
typedef struct stack {
int st[MAX_STACK_SIZE];
int index;
} stack;
stack* push(stack* s, int x) {
if (s->index == MAX_STACK_SIZE - 1) {
printf("error\n");
exit(1); // 栈满时退出程序
}
s->st[++s->index] = x;
return s;
}
void pop(stack* s) {
if (s->index == -1) {
printf("error\n");
} else {
printf("%d\n", s->st[s->index--]);
}
}
void top(stack* s) {
if (s->index == -1) {
printf("error\n");
} else {
printf("%d\n", s->st[s->index]);
}
}
int main() {
int n;
stack* a = (stack*)malloc(sizeof(stack)); // 动态分配栈内存
a->index = -1; // 初始化index为-1,表示栈为空
while (scanf("%d", &n) != EOF) {
for (int i = 0; i < n; i++) {
char s[6];
scanf("%s", s);
if (strcmp(s,"push") == 0) {
int x;
scanf("%d", &x);
push(a, x);
} else if (strcmp(s,"pop") == 0) {
pop(a);
} else if (strcmp(s,"top") == 0) {
top(a);
}
}
}
free(a); // 释放栈内存
return 0;
}