#include<stdio.h>
#include<stdlib.h>
#define Datatype int
#define size 10000
typedef struct
{
Datatype queue[size];
int rear;
int front;
int count;
}Seqcqueue;
typedef struct
{
int elem[size];
int top;
}Stack;
//初始化
void initstack(Stack *s)
{
s->top=-1;
}
void initqueue(Seqcqueue *q)
{
q->rear=0;
q->front=0;
q->count=0;
}
//入队
int inputstack(Stack *s,int x)
{
if(s->top==size)
return 0;
else
{
s->top++;
s->elem[s->top]=x;
}
}
int queueappend(Seqcqueue *q,Datatype x)
{
if(q->count>0&&q->rear==q->front)
{
return 0;
}
else
{
q->queue[q->rear]=x;
q->rear=(q->rear+1)%size;
q->count++;
return 1;
}
}
//出队
int outputstack(Stack *s,int *m)
{
if(s->top==-1) return 0;
*m= s->elem[s->top];
s->top--;
}
int Deletequeue(Seqcqueue *q,Datatype *m)
{
if(q->front==q->rear) return 0;
*m=q->queue[q->front];
q->front=(q->front+1)%size;
q->count--;
return 1;
}
/*int Isempty(Seqcqueue q)
{
if(q.count==0)
return 1;
else return 0;
}*/
int main()
{
Stack s;
initstack(&s);
Seqcqueue q;
initqueue(&q);
int n,x;
int m;
scanf("%d",&n);
int i,elem;
for(i=1;i<=n;i++)
{
scanf("%d",&elem);
queueappend(&q,elem);
}
for(i=1;i<=n;i++)
{
Deletequeue(&q,&m);
inputstack(&s,m);
}
for(i=1;i<=n;i++)
{
outputstack(&s,&x);
printf("%d ",x);
}
}