#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node* prev;
    struct Node* next;
} Node;


Node* creatnode(int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->prev = NULL;
    newNode->next = NULL;
    return newNode;
}


void printList(Node* head) {
    Node* temp = head;
    while (temp !=NULL)
        printf("%d", temp->data);
        if (temp->next !=NULL)
            printf(" \n ");
        temp = temp->next;
    }
 printf("\n");



Node* deleteLastNode(Node* head) {
    if (head == NULL)
        return NULL;
        
    if (head->next == NULL) {
        free(head);
        return NULL;
    }
    
    Node* temp = head;
    while (temp->next !=NULL)
        temp = temp->next;
        
    temp->prev->next = NULL;
    free(temp);
    return head;
}

int main() {
    int n;
    scanf("%d", &n);
    
    if (n < 0) {
        printf("Invalid input/n");
        return 0;
    }
    
    Node* head = NULL;
    Node* tail = NULL;
    
    for (int i = 0; i < n; i++) {
        int value;
        scanf ("%d", &value);
        Node* newNode = creatnode(value);
        if (head == NULL) {
            head = tail = newNode;
        } else {
            tail->next = newNode;
            newNode->prev = tail;
            tail = newNode;
        }
    }
    
    
    printList(head);
    
    
    head = deleteLastNode(head);
    printlist(head);
    
    
    return 0;
}