#include <iostream>
using namespace std;
template<class T>
void merge(T *arr, int p, int q, int r)
{
int i, k;
int s1 = p, e1 = q, s2 = q + 1 , e2 = r;
T *temp = new T[r - p + 1 ];
k = 0 ;
while (s1 <= e1 && s2 <= e2)
{
if (arr[s1] < arr[s2])
{
temp[k ++] = arr[s1];
s1 ++;
}
else
{
temp[k ++] = arr[s2];
s2 ++;
}
}
while (s1 <= e1)
{
temp[k ++] = arr[s1 ++];
}
while (s2 <= e2)
{
temp[k ++] = arr[s2 ++];
}
for (int i = 0 ; i < r - p + 1 ; ++ i)
{
arr[p + i] = temp[i];
}
delete[] temp;
temp = 0 ;
}
template<class T>
void merge_sort(T *arr, int left , int right )
{
int mid = 0 ;
if (left < right )
{
mid = (right + left ) / 2 ;
merge_sort(arr, left , mid );
merge_sort(arr, mid + 1 , right );
merge(arr, left , mid , right );
}
}
int main()
{
int size;
cin >> size;
int *arr = new int [size];
for (int i = 0 ; i < size; ++ i)
cin >> *(arr+i);
merge_sort(arr, 0 , size - 1 );
for (int i = 0 ; i < size; ++ i)
cout << *(arr + i) << " " ;
cout << endl;
}