#include<bits/stdc++.h>
using namespace std;
void merging(int st,int end,int mid, int arr3[])
{
int m = mid-st+1;
int n = end-mid;
int arr[m],arr2[n];
for(int i = 0; i <m; i++)
{
arr[i]=arr3[st+i];
}
for(int j = 0; j< n; j++)
{
arr2[j]=arr3[mid+1+j];
}
int i = 0, j= 0, k = st;
while (i < m && j <n)
{
if (arr[i] < arr2[j])
{
arr3[k] = arr[i];
k++;
i++;
}
else
{
arr3[k] = arr2[j];
k++;
j++;
}
}
for( ; i<m; i++)
{
arr3[k] = arr[i];
k++;
}
for( ; j <n ; j++)
{
arr3[k] = arr2[j];
k++;
}
}
void mergesort(int st, int end, int arr[])
{
if (st < end)
{
int mid = (st+end)/2;
mergesort(st,mid,arr);
mergesort(mid+1,end,arr);
merging(st,end,mid,arr);
}
}
int main()
{
int n;
cin >> n;
int arr[n];
for(int i = 0; i < n; i++)
cin >> arr[i];
mergesort(0,n-1, arr);
for(int i = 0; i <n; i++)
cout << arr[i] << " ";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgbWVyZ2luZyhpbnQgc3QsaW50IGVuZCxpbnQgbWlkLCBpbnQgYXJyM1tdKQp7CiAgICBpbnQgbSA9IG1pZC1zdCsxOwogICAgaW50IG4gPSBlbmQtbWlkOwogICAgaW50IGFyclttXSxhcnIyW25dOwogICAgZm9yKGludCBpID0gMDsgaSA8bTsgaSsrKQogICAgewogICAgICAgIGFycltpXT1hcnIzW3N0K2ldOwogICAgfQogICAgZm9yKGludCBqID0gMDsgajwgbjsgaisrKQogICAgewogICAgICAgIGFycjJbal09YXJyM1ttaWQrMStqXTsKICAgIH0KICAgIGludCBpID0gMCwgaj0gMCwgayA9IHN0OwogICAgd2hpbGUgKGkgPCBtICYmIGogPG4pCiAgICB7CgogICAgICAgIGlmIChhcnJbaV0gPCBhcnIyW2pdKQoKICAgICAgICB7CgogICAgICAgICAgICBhcnIzW2tdID0gYXJyW2ldOwogICAgICAgICAgICBrKys7CiAgICAgICAgICAgIGkrKzsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKCiAgICAgICAgICAgIGFycjNba10gPSBhcnIyW2pdOwogICAgICAgICAgICBrKys7CiAgICAgICAgICAgIGorKzsKICAgICAgICB9CiAgICB9CiAgICBmb3IoIDsgaTxtOyBpKyspCiAgICB7CgogICAgICAgIGFycjNba10gPSBhcnJbaV07CiAgICAgICAgaysrOwogICAgfQogICAgZm9yKCA7IGogPG4gOyBqKyspCiAgICB7CgogICAgICAgIGFycjNba10gPSBhcnIyW2pdOwogICAgICAgIGsrKzsKICAgIH0KfQoKdm9pZCBtZXJnZXNvcnQoaW50IHN0LCBpbnQgZW5kLCBpbnQgYXJyW10pCnsKICAgIGlmIChzdCA8IGVuZCkKICAgIHsKICAgICAgICBpbnQgbWlkID0gKHN0K2VuZCkvMjsKICAgICAgICBtZXJnZXNvcnQoc3QsbWlkLGFycik7CiAgICAgICAgbWVyZ2Vzb3J0KG1pZCsxLGVuZCxhcnIpOwogICAgICAgIG1lcmdpbmcoc3QsZW5kLG1pZCxhcnIpOwogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICBpbnQgYXJyW25dOwogICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICBjaW4gPj4gYXJyW2ldOwoKICAgIG1lcmdlc29ydCgwLG4tMSwgYXJyKTsKCiAgICBmb3IoaW50IGkgPSAwOyBpIDxuOyBpKyspCiAgICAgICAgY291dCA8PCBhcnJbaV0gPDwgIiAiOwogICAgcmV0dXJuIDA7Cn0K