#include <stdio.h>
#include <iostream.h>
#include <vector.h>
using namespace std;

struct Node {
    int data;
    Node* next;
    Node(int val) : data(val), next(nullptr) {}
};

void insertInMiddle(Node** head, int val) {
    Node* newNode = new Node(val);

    if (*head == nullptr) {
        *head = newNode;
        return;
    }

    Node *slow = *head, *fast = *head, *prev = nullptr;
    while (fast != nullptr && fast->next != nullptr) {
        fast = fast->next->next;
        prev = slow;
        slow = slow->next;
    }

    if (fast == nullptr) { // even length
        newNode->next = slow;
        if (prev) prev->next = newNode;
        else *head = newNode;
    } else { // odd length
        newNode->next = slow->next;
        slow->next = newNode;
    }
}

void printList(Node* head) {
    Node* temp = head;
    while (temp != nullptr) {
        cout << temp->data;
        if (temp->next != nullptr) cout << " ";
        temp = temp->next;
    }
    cout << "\n";
}

int main() {
    int n;
    if (!(cin >> n)) {
        cout << "Invalid input\n";
        return 0;
    }

    Node* head = nullptr, *tail = nullptr;
    for (int i = 0; i < n; i++) {
        int x;
        if (!(cin >> x)) {
            cout << "Invalid input\n";
            return 0;
        }
        Node* newNode = new Node(x);
        if (!head) head = tail = newNode;
        else { tail->next = newNode; tail = newNode; }
    }

    int val;
    if (!(cin >> val)) {
        cout << "Invalid input\n";
        return 0;
    }

    insertInMiddle(&head, val);
    printList(head);
    return 0;
}