#include <stdio.h>
#include <stdlib.h>

int main() {
    int n;
    while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case
        int* p = malloc(sizeof(int) * (n + 1));
        if (p == NULL)
        {
            perror("main");
            return 1;
        }
        int i;

        //输入数据
        for (i = 0; i < n; i++)
        {
            scanf("%d", &p[i]);
        }
        
        int ret;
        scanf("\n%d", &ret);
        int tmp = ret;
       
        //操作,外循环用来比较
        for (i = 0; i < n; i++)
        {

            //若插入的输小于某个数,那么将这个数插在前面,即将当前位置依次往后移动一个
            if (ret < p[i])
            {
                tmp = p[i];     //暂存p[i]
                p[i] = ret;     //交换
                ret = tmp;      //用当时的p[i]去跟后面的比较,虽然都能通过
            }
        }
         //将取出的ret与原来数组中的最后一位进行比较,肯定是会大于,然后将这个数放到数组的末尾
         if (ret > p[n - 1])
        {
            p[n] = ret;
        }

        for (i = 0; i <= n; i++)
        {
            printf("%d ", p[i]);
        }


        free(p);
        p = NULL;

    }
    return 0;
}