#include <iomanip>
#include <iostream>
#include <map>
#include <unordered_map>
using namespace std;
int arr[100005];
int tmp[100005];
void merge_(int a[], int l, int m, int r){
int i=l,j=m+1;
int cnt=0;
for(;i<=m&&j<=r;){
if(a[i]<=a[j]) tmp[++cnt]=a[i],i++;
else tmp[++cnt]=a[j], j++;
}
while(i<=m) tmp[++cnt]=a[i],i++;
while(j<=r) tmp[++cnt]=a[j],j++;
for(int i=l,j=1;i<=r;i++,j++){
a[i]=tmp[j];
}
}
void merge_sort(int a[], int l, int r){
if(l==r) return;
int m = (l+r)>>1;
merge_sort(a, l, m);
merge_sort(a, m+1, r);
merge_(a, l, m, r);
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>arr[i];
merge_sort(arr, 1, n);
for(int i=1;i<=n;i++) cout<<arr[i]<<" ";
return 0;
}
Time complexity O(nlogn)
Space complexity O(n)