#include <stdio.h>
int main() {
int n,insert;
int mid;
int a[50];
int l,r;
scanf("%d",&n);
l = 0;
r = n-1;
for(int i = 0 ;i < n; i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&insert);
int k =0;
/////////////////////////////////////////////
if(insert > a[n-1])
{
a[n] = insert;
}
//////////////////////////////////////////
if(insert < a[0])
{
for(int i = n ; i>0 ; i--)
{
a[i] = a[i-1];
}
a[0] = insert;
}
////////////////////////////////////////////
if(insert > a[0] && insert < a[n-1])
{
while(l<=r)
{
mid = (l+r)/2;
if(a[mid] == insert)
break;
if(a[mid] < insert)
{
l = mid +1;
}
if(a[mid] > insert)
{
r = mid -1;
}
}
//mid的值有两种情况:1、mid = n 。2、l>r n = l占位,后面的全部像后面挪动.
if(l<=r)
{
// a[n] = a[n-1]
// a[n-1] = a[n-1-1]
// a[n-1-1] = a[n-1-1-1]
while(n-1 != mid)
{
a[n] = a[n-1];
n = n-1;
}
a[n-1] = insert;
}
if(l>r)
{
//a[l]肯定大于a[r];比较a[r]是否大于insert,如果大于,从a[r]往后撤,如过不是从a[l]向后撤。
if(a[r]>insert)
{
while(n-1>=r)
{
a[n] = a[n-1];
n = n-1;
k++;
}
n=n+k;
a[r] = insert;
}
else if(a[r]<insert)
{
while(n-1 >= l)
{
a[n] = a[n-1];
n=n-1;
k++;
}
n=n+k;
a[l] = insert;
}
}
}
for(int i = 0 ; i<= n ;i++)
{
printf("%d ",a[i]);
}
}