#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
    int data;
    struct Node* next;
    struct Node* prev;
}Node;
Node* head=NULL;
Node* createNode(int val){
    Node* n=(Node *)malloc(sizeof(Node));
    n->data=val;
    n->prev=NULL;
    return n;
}
void insertAtEnd(int val){
    Node* newNode=createNode(val);
    if(head=NULL){
        head=newNode;
        return;
    }
    Node* temp=head;
    while(temp->next!=NULL){
        temp=temp->next;
    }
    temp->next=newNode;
    newNode->prev=temp;
}
void removeDuplicates(){
    Node* current=head;
    while(current != NULL){
        Node* runner = current->next;
        while(runner != NULL){
            if(runner->data == current->next){
                Node* duplicates = runner;
                runner=runner->next;
                if(duplicates->prev != NULL)
                duplicates->prev->next = duplicates->next;
                if(duplicates->next != NULL)
                duplicates->next->prev=duplicates->prev;
                free(duplicates);
            }else {
                runner=runner->next;
            }
        }
        current = current->next;
    }
}
void display(){
    Node*temp=head;
    while(temp != NULL){
        printf("%d ", temp->data);
        temp=temp->next;
    }
    printf("\n");
}
int main(){
    int n;
    scanf("%d", &n);
    if(n<=0){
        printf("Invalid input");
        return 0;
    }
    for(int i=0;i<n;i++){
        int a;
        if(!scanf("%d", &a)){
            printf("Invalid input");
            return 0;
        }
        insertAtEnd(a);
    }
    display();
    removeDuplicates();
    display();
    return 0;
}