#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
typedef struct SeqList{
int arr[1000];
int length;
}SeqList,*PSeqList;
typedef struct node{
int info;
node* next;
}node,*Pnode;
void listCreat(PSeqList list,int* a,int len){
list->length=len;
int m;
for(int i=0;i<len;i++)
list->arr[i]=a[i];
}
void outputList(PSeqList list){
for(int i=list->length-1;i>=0;i--)
cout<<list->arr[i]<<" ";
}
void nodeCreat(Pnode p,int* a,int len){
Pnode tail;//我也不知道要不要申请空间,不用!
tail=p;
for(int i=0;i<len;i++){
Pnode t=(Pnode)malloc(sizeof(node));
t->info=a[i];
tail->next=t;
tail=t;
}
tail->next=NULL;//记得尾巴指向空;
}
void outputNode(Pnode p){
Pnode t=p->next;//是头结点
while(t!=NULL) {
cout<<t->info<<" ";
t=t->next;
}
}
void nodeReverse(Pnode p){//就地逆置关键部分
Pnode q=p->next->next;//从第二个结点开始逆置
Pnode first=p->next;//保存第一个结点
Pnode t;//保存下一结点
while(q){
t=q->next;
q->next=p->next;
p->next=q;
q=t;
}
first->next=NULL;//首结点变尾节点
}
int main(){
int len;
cin>>len;
int a[1000];
for(int i=0;i<len;i++)
cin>>a[i];
PSeqList list=(PSeqList)malloc(sizeof(SeqList));
Pnode p=(Pnode)malloc(sizeof(node));
listCreat(list,a,len);
nodeCreat(p,a,len);
outputList(list);
cout<<endl;
nodeReverse(p);
outputNode(p);
}