#include<bits/stdc++.h>
using namespace std;
int r[10001],a[10001];
void msort(int s,int t)
{
if(s==t)return;//如果只有一个数字则返回,无需排序
int mid=(s+t)/2;
msort(s,mid);//分解左序列
msort(mid+1,t);//分解右序列
int i=s,j=mid+1,k=s;//接下来合并
while(i<=mid && j<=t)
{
if(a[i]<=a[j])
{
r[k]=a[i];
k++;
i++;
}
else
{
r[k]=a[j];
k++;
j++;
}
}
while(i<=mid)//复制左边子序列剩余
{
r[k]=a[i];
k++;
i++;
}
while(j<=mid)//复制右边子序列剩余
{
r[k]=a[j];
k++;
j++;
}
for(int i=s;i<=t;i++)
a[i]=r[i];
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
msort(0,n-1);
for(int i=0;i<n;i++)
cout<<a[i]<<' ';
return 0;
}
//10 4 6 3 8 2 5 7 s=1 t=8 msort(1,8) mid=4
// s=1 t=4 msort(1,4) mid=2
// s=1 t=2 mosrt(1,2) mid=1
// ***mosrt(1,2)
// i=1 j=2 k=1 mid=1
// r[1]=4; j=3 k=2 r[2]=10; k=3 i=2
// 4 10 6 3 8 2 5 7
//
// ***mosrt(1,4)
// i=1 j=3 k=1 mid=2 t=4
// r[1]=3 j=4 k=2
// r[2]=4 i=2 k=3
// r[3]=6 j=5 k=4
// r[4]=10 k=5 i=3
//
// 3 4 6 10 8 2 5 7