#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef struct {
int* data;
int capacity;
int length;
}SeqList;
int InitList(SeqList &L) {
L.data = (int*)malloc(MaxSize * sizeof(int));
L.capacity = MaxSize;
L.length = 0;
return 1;
}
int CreateList(SeqList &L, int n) {
int i;
for (i = 0; i < n; i++) {
scanf_s("%d", &L.data[i]);
}
L.length = n;
return 1;
}
int ListDelete(SeqList& L,int i,int &e) {
if (i > L.length || i < 0) {
return 0;
}
e = L.data[i - 1];
for (int j= i; j<L.length; j++) {
L.data[j - 1] = L.data[j];
}
L.length--;
}
int ListInsert(SeqList &L, int i, int e) {
if (i > L.length+1 || i < 0) {
return 0;
}
for (int j = L.length; j >= i; j--) {
L.data[j] = L.data[j - 1];
}
L.data[i - 1] = e;
L.length++;
return 1;
}
int LocateElem(SeqList& L, int e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i + 1;
}
}
}
void PrintList(SeqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
void Reverse(SeqList& L,SeqList &L1) {
for (int j = L.length - 1,i=0; j >= 0; j--,i++) {
L1.data[i] = L.data[j];
}
L1.length = L.length;
}
int main() {
int n;
scanf_s("%d", &n);
SeqList L;
SeqList L1;
InitList(L);
InitList(L1);
CreateList(L,n);
PrintList(L);
Reverse(L, L1);
PrintList(L1);
return 0;
}