// editor3
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
typedef struct Node{
    char task[101];
    struct Node*prev;
    struct Node*next;
}Node;
Node*createNode(char* t){
    Node*newNode=(Node*)malloc(sizeof(Node));
    strcpy(newNode->task,t);
    newNode->prev=newNode->next=NULL;
    return newNode;
}
int containsDigit(char*str){
    for(int i=0;str[i];i++){
        if(isdigit((unsigned char)str[i])){
            return 1;
        }
    }
    return 0;
}
int main(){
    int n;
    if(scanf("%d",&n)!=1||n<0||n>1000){
        printf("Invalid input\n");
        return 0;
    }
    Node*head=NULL,*tail=NULL;
    for(int i=0;i<n;i++){
        char task[101];
        if(scanf("%s",task)!=1){
            printf("Invalid input\n");
            return 0;
        }
        Node*newNode=createNode(task);
        if(head==NULL){
            head=tail=newNode;
        }else{
            tail->next=newNode;
            newNode->prev=tail;
            tail=newNode;
        }
    }
    char newTask[101];
    if(scanf("%s",newTask)!=1||containsDigit(newTask)){
        printf("Invalid input\n");
        return 0;
    }
    Node*highPriority=createNode(new Task);
    highPriority->next=head;
    if(head!=NULL){
        head->prev=highPriority;
    }
    head=highPriority;
    Node*curr=head;
    while(curr!=NULL){
        printf("%s",curr->task);
        if(curr->next!=NULL)printf(" ");
        curr=curr->next;
    }
    printf("\n");
    return 0;
}