#include<stdio.h>
#include<stdlib.h>
typedef struct treenode{
    int data;
    struct treenode*left;
    struct treenode*right;
}node;
node*create(int val){
    node*newnode=(node*)malloc(sizeof(node));
    newnode->data=val;
    newnode->left=newnode->right=NULL;
    return newnode;
}
node*insertBST(node**root,int val){
    node*newnode=create(val);
    if(*root==NULL){
        *root = newnode;
        return ;
    }
    node*queue[100];
    int front =0, rear=0;
    queue[rear++] = *root;
    
    while(front<rear){
        node*temp=queue[front++];
        if(!temp->left){
            temp->left = newnode;
            return ;
        }
        else{
            queue[rear++] = temp->left;
        }
        if(!temp->right){
            temp->right = newnode;
            return ;
        }else{
            queue[rear++] = temp->left;
        }
        if(!temp->right){
            temp->right = newnode;
            return;
        }
        else{
            queue[rear++] = temp->right;
        }
    }
}

void printlevelOrder(node*root){
    if(!root) return;
    node*queue[100];
    int front=0,rear=0;
    queue[rear++] = root;
    
    while(front<rear){
        node*temp = queue[front++];
        print("%d",temp->data);
        if(temp->left)queue[rear++]=temp->left;
        if(temp->right)queue[rear++]=temp->right;
    }
}


int main(){
    int n,val;
    scanf("%d",&n);
    if(n<0){
        printf("Invalid input");
        return 0;
    }
    node* root=NULL;
    for(int i=0;i<n;i++){
        int x;
        scanf("%d",&x);
        insert(&root,x);
    }
    scanf("%d",&val);
    insert(&root,val);
    printLevelOrder(root);
    return 0;
}