#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node *next;
} Node;

Node *head = NULL, *tail = NULL;

void insertEnd(int val) {
    Node n = (Node)malloc(sizeof(Node));
    n->data = val;
    if (!head) {
        head = tail = n;
        n->next = head; 
    } else {
        tail->next = n;
        tail = n;
        tail->next = head;
    }
}

void deleteMiddle(int n) {
    if (n == 1) { 
        free(head);
        head = tail = NULL;
        return;
    }

    int mid = n / 2;  
    Node *temp = head;
    Node *prev = NULL;

    for (int i = 0; i < mid; i++) {
        prev = temp;
        temp = temp->next;
    }

    prev->next = temp->next;
    if (temp == head) head = head->next;
    if (temp == tail) tail = prev;
    free(temp);
    tail->next = head;
}

void printList(int n) {
    if (!head) {
        printf("List is empty\n");
        return;
    }
    Node *temp = head;
    for (int i = 0; i < n; i++) {
        printf("%d", temp->data);
        if (i < n - 1) printf(" ");
        temp = temp->next;
    }
    printf("\n");
}

int main() {
    int n;
    if (scanf("%d", &n) != 1 || n < 1 || n > 1000) {
        printf("Invalid input\n");
        return 0;
    }

    int val, count = 0;
    for (int i = 0; i < n; i++) {
        if (scanf("%d", &val) != 1 || val < 0) {
            printf("Invalid input\n");
            return 0;
        }
        insertEnd(val);
        count++;
    }

    if (count != n) {
        printf("Invalid input\n");
        return 0;
    }

    deleteMiddle(n);
    printList(n - 1);

    return 0;
}