//归并排序(nlog n)
#include<cstdio>
#include<iostream>
using namespace std;
int a[100000];
int b[100000];
void print(int n)
{
for(int i=1; i<=n; i++)
printf("%d ",a[i]);
printf("\n");
}
void init(int n)
{
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
}
void mergesort(int left,int right)
{
if(left>=right)
return ;
int mid=(right-left)/2+left;
mergesort(left,mid);
mergesort(mid+1,right);
for(int i=left; i<=right; i++)
b[i]=a[i];
int j=mid+1,i=left;
int k=left;
while(j<=right || i<=mid)
{
if(i<=mid && (j>right || b[i]<b[j])) //注意当j>right的时候也是可以将i段元素移进新数组的
a[k++]=b[i++];
else
a[k++]=b[j++];
}
}
int main()
{
int n;
while(cin>>n)
{
init(n);
mergesort(1,n);
print(n);
}
return 0;
}