/*#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    int arr[n + 1];
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    //输入要插入的数
    scanf("%d", &arr[n]);

    //直接排序
    //就变成有序数列了
    for (int i = 0; i < n; i++)//n 个数 ,排 n - 1 趟,因为n - 1个数 排好位置了,最后一个数自然就排好位置了
    {
        for (int j = 0; j < n + 1 - i - 1; j++)//每一趟排 n + 1 - i - 1  次
        {
            //升序
            if (arr[j] > arr[j + 1])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    //输出
    for (int i = 0; i < n + 1; i++)
    {
        printf("%d ", arr[i]);
    }
}
//总结:全部输入到数组中 ,最后直接排序,就是有序数列了
*/
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#define NUM 51
int main()
{
	int n = 0;//数组中数字的个数
	while (~scanf("%d", &n))
	{
		int arr[NUM] = { 0 };
		//输入数组中的元素
		for (int i = 0; i < n; i++)
		{
			scanf("%d", &arr[i]);
		}
		int insert = 0;
		//输入要插入的数
		scanf("%d", &insert);

		//开始插入
		//思路:
		//从大数开始比较,发现了 比要插入的数小的数就插入,否则大数往后移
		int i = 0;
		for (i = n - 1; i >= 0; i--)
		{
			if (arr[i] > insert)
			{
				arr[i + 1] = arr[i];//大数向后移
			}
			else if (arr[i] < insert)
			{
				arr[i + 1] = insert;//发现了比要插入的数小的数就在其后 插入 ,保持升序
				break;
			}
		}
		if (i < 0)//数组中没有比要插入的数小的数。此时,要插入的数就只能放入首端。
		{
			arr[0] = insert;
		}

		//打印
		for (int j = 0; j < n + 1; j++)
		{
			printf("%d ", arr[j]);
		}
		
	}

	return 0;
}