#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct SNode {
int Data[100000];
int Top;
};
typedef struct SNode* stack ;
void PUSH(stack ptrs, int item) {
ptrs->Data[++(ptrs->Top)] = item;
return;
}
int POP(stack ptrs) {
if (ptrs->Top == -1) {
return -1;
} else {
return (ptrs->Data[(ptrs->Top)--]);
}
}
int top(stack ptrs) {
if (ptrs->Top == -1) {
return -1;
} else {
return ptrs->Data[ptrs->Top];
}
}
int main() {
stack ptrs = (stack)malloc(sizeof(struct SNode));
ptrs->Top = -1;
int n;
scanf("%d", &n);
char operation[5];
int value;
while (n--) {
scanf("%s", operation);
if (strcmp(operation, "push") == 0) {
scanf("%d", &value);
PUSH(ptrs, value);
} else if (strcmp(operation, "pop") == 0) {
int guodu = -1;
int popvalue=POP(ptrs);
if (guodu == popvalue) {
printf("error\n");
} else {
printf("%d\n", popvalue);
}
} else if (strcmp(operation, "top") == 0) {
int guodu = -1;
if (guodu == top(ptrs)) {
printf("error\n");
} else {
printf("%d\n", top(ptrs));
}
}
}
free(ptrs);
}