#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=1e5+5; //100005
int a[MAXN], temp[MAXN], n;
void MergeSort(int l, int r) //再次提醒函数慎用inline,不清楚能不能用就不要用
{
int mid=(l+r)>>1;
if(l==r) return;
MergeSort(l, mid);
MergeSort(mid+1, r);
int i=l, j=mid+1, k=l; //开始2路归并
while(i<=mid && j<=r)
{
if(a[i]<=a[j]) temp[k++]=a[i++];
else temp[k++]=a[j++];
}
while(i<=mid) temp[k++]=a[i++];
while(j<=r) temp[k++]=a[j++];
for(int i=l; i<=r; i++) a[i]=temp[i];
return;
}
int main(void)
{
scanf("%d", &n);
for(int i=1; i<=n; i++) scanf("%d", &a[i]);
MergeSort(1, n);
for(int i=1; i<=n; i++) printf("%d ", a[i]);
return 0;
}