#include <stdio.h> #include <stdlib.h>
void sort(int*,int,int); void merge(int*,int,int,int);
int main(void) {
int n;
scanf("%d",&n);
int* arr=(int*)malloc(n*sizeof(int));
for(int i=0;i<n;i++)
scanf("%d",&arr[i]);
sort(arr,0,n-1);
for(int i=0;i<n;i++)
printf("%d ",arr[i]);
return 0;
}
void sort(int* arr,int start,int end) { if(start==end) return;
int middle=(start+end)/2;
sort(arr,start,middle);
sort(arr,middle+1,end);
merge(arr,start,middle,end);
}
void merge(int* arr,int start,int middle,int end) { int n=end-start+1;
int temparr[n];
int i=start,j=middle+1,k=0;
while(k<n)
{
if(i<=middle&&j<=end)
{
if(arr[i]<=arr[j])
{temparr[k]=arr[i];
i++;
}
else
{temparr[k]=arr[j];
j++;
}
k++;
}
else if(i>middle)
{
temparr[k]=arr[j];
j++;
k++;
}
else
{
temparr[k]=arr[i];
i++;
k++;
}
}
k=0;
for(int r=start;r<=end;r++,k++)
arr[r]=temparr[k];
}