//by wwq 


#include<stdio.h>
#include<stdlib.h>

//提高程序可维护性 
typedef int DateType; 

//声明结构体list 
typedef struct{
	DateType data[100];//保存数据 
	int length;//保存表长度 
}list;

//函数功能:初始化顺序表 
void init_list(list *a)
{
	a->length = 0;
}

//函数功能:创建链表
//参数: *a ——结构体指针；n——需要录入的数据数量 
void create_list(list *a, int n)
{
	for(int i = 0;i<n;i++)
	{
		scanf("%d",&a->data[i]);
	}
	a->length = n;
}

//函数功能:添加 
//参数: *a ——结构体指针，num——添加的数据 
void add(list *a, int num)
{
	a->data[a->length] = num;
	a->length++;
	
}

//函数功能:选择排序 
//参数: *a ——结构体指针
void sort(list *a)
{
	int tmp = 0;
	for(int i = 0;i < a->length; i++)
	{
		for(int j = i + 1;j < a->length; j++ )
		{
			if(a->data[i] > a->data[j])
			{
				tmp = a->data[i];
				a->data[i] = a->data[j];
				a->data[j] = tmp;
			}
		}
	}
}

//函数功能:冒泡排序 
//参数: *a ——结构体指针
void sort2(list *a)
{
	int tmp = 0;
	while(1)
	{
		short flag = 1;
		for(int i = 0;i < a->length - 1; i++)
		{	
			if(a->data[i] > a->data[i+1])
			{
				tmp = a->data[i];
				a->data[i] = a->data[i+1];
				a->data[i+1] = tmp;
				flag = 0;
				
			}
			
		}
		if(flag)
		{
			break;
		}
	}
 } 

//函数功能:插入排序 
//参数: *a ——结构体指针
void sort3(list *a)
{
    int tmp = 0;
    for(int i = 1; i < a->length; i++)
    {
        for(int j = i; j > 0; j--)
        {
            if(a->data[j] < a->data[j-1])
            {
                tmp = a->data[j];
                a->data[j] = a->data[j-1];
                a->data[j-1] = tmp;
            }
            else
            {
                break;
            }
        }
    }
    return;
}

int main()
{
	list a;//定义一个顺序表a 
	int n = 0;//顺序表存储数字的个数 
	int x = 0; //需要添加的数字 
	init_list(&a);
	scanf("%d",&n); 
	create_list(&a,n);
	scanf("%d", &x);
	add(&a,x);
	sort3(&a);
	//sort2(&a);
	//sort3(&a);
	for(int i = 0;i < a.length;i++)
	{
		printf("%d ",a.data[i]);
	 } 
	return 0;	 
}
