#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
    int data;
    struct Node* next;
}Node;
Node* createNode(int data){
    Node* newNode = (Node*)malloc(sizeof(Node));
    if(newNode == NULL){
        exit(1);
    }
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}
void freeList(Node* head){
    Node* current = head;
    while(current != NULL){
        Node* nextNode = current->next;
        free(current);
        current = nextNode;
    }
}
int main(){
    int n;
    Node *head = NULL, *tail = NULL;
    if(scanf("%d", &n) != 1 || n<0 || n>1000){
        printf("Invalid input");
        return 0;
    }
    for( int i=0; i<n; i++){
        int value;
        if(scanf("%d", &value) != 1){
            printf("Invalid input");
            freeList(head);
            return 0;
        }
        Node* newNode = createNode(value);
        if(head == NULL){
            head = tail = newNode;
        }else{
            tail->next = newNode;
            tail = newNode; 
        }
    }
    int val_to_insert;
    if(scanf("%d", &val_to_insert) != 1){
        printf("Invalid input");
        freeList(head);
        return 0;
    }
    int middle_position = n/2;
    int newNode = create(val_to_insert);
    if(middle_position == 0){
        newNode->next = head;
        head = newNode;
    }else{
        Node* temp = head;
        for(int i=0; i<middle_position-1; i++){
            temp=temp->next;
        }
        newNode->next = temp->next;
        temp->next = newNode;
    }
    Node* current = head;
    while(current != NULL){
        printf("%d", current->data);
        if(current->next != NULL){
            printf(" ");
        }
        current = current->next;
    }
    printf("\n");
    freeList(head);
    return 0;
}