#include <stdio.h>
#include <stdbool.h>
#define MAXSIZE 1000
typedef int ElemType;
typedef struct {
ElemType data[MAXSIZE];
int top;
} Stack;
// 初始化一个栈:
void InitStack(Stack *S) {
S->top = -1;
}
// 栈判空:
bool StackEmpty(Stack S) {
if (S.top == -1) {
return true;
} else
return false;
}
// 进栈:
bool Push(Stack *S, ElemType x) {
if (S->top == MAXSIZE - 1)
return false;
else {
S->data[++S->top] = x;
return true;
}
}
// 出栈:
bool Pop(Stack *S, ElemType *x) {
if (S->top != -1) {
*x = S->data[S->top--];
return true;
} else
return false;
}
// 读取栈顶元素:
bool GetTop(Stack S, ElemType *x) {
if (S.top == -1)
return false;
else {
*x = S.data[S.top];
return true;
}
}
int main() {
int n;
scanf("%d", &n);
Stack S;
InitStack(&S);
int number;
int Arr[n];
while (n--) {
scanf("%d", &number);
Push(&S, number);
}
int i = 0;
while (S.top != -1) {
Pop(&S, &number);
printf("%d ", number);
}
printf("\n");
return 0;
}