#include<iostream>
using namespace std;
const int N=100010;
int q[N];
int n;
//快排的时间复杂度是O(nlogn),特点是每次循环都能够确定第一个位置的值的真正位置,使它左边的值都小于它,右边的值都大于它
void quick_sort(int q[], int l,int r)
{
if(l>=r) return ;
int i=l-1, j=r+1, x=q[l];
while(i<j)
{
do i++; while(q[i]<x);
do j--; while(q[j]>x);
if(i<j) swap(q[i],q[j]);
}
quick_sort(q, l, j);
quick_sort(q, j+1, r);
}
int main()
{
cin>>n;
for(int i=0;i<n;i++) cin>>q[i];
quick_sort(q, 0, n-1);
for(int i=0;i<n;i++) cout<<q[i]<<' ';
return 0;
}