#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std ;
const int N = 1e6 + 10 ;
int n ;
int q[N] ;
void quick_sort (int a[] , int l , int r)
{
if (l >= r) return ;
int x = a[(l + r) >> 1] , i = l - 1 , j = r + 1 ;
while (i < j){
do i++ ; while (a[i] < x) ;
do j-- ; while (a[j] > x) ;
if (i < j) swap (a[i] , a[j]) ;
}
quick_sort (a , l , j ) ;
quick_sort (a , j + 1 , r) ;
}
/*
void quick_sort (int a[] , int l , int r)
{
if (l >= r) return ;
int x = a[j] , i = l - 1 , j = r + 1 ; // 写i时,分解值不能选a【l】
while (i < j){
do i++ ; while (a[i] < x) ;
do j-- ; while (a[j] > x) ;
if (i < j) swap (a[i] , a[j]) ;
}
quick_sort (a , l , i - 1 ) ;
quick_sort (a , i , r) ;
}
*/
/*
void quick_sort (int a[] , int l , int r)
{
if (l >= r) return ;
int x = a[i] , i = l - 1 , j = r + 1 ; // 写j时,分解值不能选a【r】
while (i < j){
do i++ ; while (a[i] < x) ;
do j-- ; while (a[j] > x) ;
if (i < j) swap (a[i] , a[j]) ;
}
quick_sort (a , l , j ) ;
quick_sort (a , j + 1 , r) ;
}
*/
int main ()
{
scanf ("%d" , &n) ;
for (int i = 1 ; i <= n ; i ++) scanf ("%d" , &q[i]) ;
quick_sort (q , 1 , n) ;
for (int i = 1 ; i <= n ; i++) printf ("%d " , q[i]) ;
return 0 ;
}