#include <stdio.h>
int main(void) {
// your code goes here
int n,i;
int a[n];
for(i
=0;i
<n
;i
++)scanf("%d",&a
[i
]); mergesort(a,0,n-1);
for(i
=0;i
<n
;i
++)printf("%d ",a
[i
]); return 0;
}
void merge(int a[],int l,int m,int r){
int i,j=0,n1=m-l+1;
int n2=r-m,k=0;
int x[n1],y[n2];
for(i=0;i<n1;i++)x[i]=a[i];
for(i=0;i<n2;i++)y[i]=a[n1+i];
while( (i<n1 || j<n2) && k<=r){
if(x[i]>y[j]){
a[k]=y[j];
j++;
}
else{
a[k]=x[i];
i++;
}
k++;
}
}
void mergesort(int a[],int l,int r){
if(l<r){
int m = (l+r)/2;
mergesort(a,l,m);
mergesort(a,m+1,r);
merge(a,l,m,r);
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbih2b2lkKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglpbnQgbixpOwoJc2NhbmYoIiVkIiwmbik7CglpbnQgYVtuXTsKCWZvcihpPTA7aTxuO2krKylzY2FuZigiJWQiLCZhW2ldKTsKCW1lcmdlc29ydChhLDAsbi0xKTsKCWZvcihpPTA7aTxuO2krKylwcmludGYoIiVkICIsYVtpXSk7CglyZXR1cm4gMDsKfQp2b2lkIG1lcmdlKGludCBhW10saW50IGwsaW50IG0saW50IHIpewoJaW50IGksaj0wLG4xPW0tbCsxOwoJaW50IG4yPXItbSxrPTA7CglpbnQgeFtuMV0seVtuMl07Cglmb3IoaT0wO2k8bjE7aSsrKXhbaV09YVtpXTsKCWZvcihpPTA7aTxuMjtpKyspeVtpXT1hW24xK2ldOwoJd2hpbGUoIChpPG4xIHx8IGo8bjIpICYmIGs8PXIpewoJCWlmKHhbaV0+eVtqXSl7CgkJCWFba109eVtqXTsKCQkJaisrOwoJCX0KCQllbHNlewoJCQlhW2tdPXhbaV07CgkJCWkrKzsKCQl9CgkJaysrOwoJfQoJCgkKfQp2b2lkIG1lcmdlc29ydChpbnQgYVtdLGludCBsLGludCByKXsKCWlmKGw8cil7CgkJaW50IG0gPSAobCtyKS8yOwoJCW1lcmdlc29ydChhLGwsbSk7CgkJbWVyZ2Vzb3J0KGEsbSsxLHIpOwoJCW1lcmdlKGEsbCxtLHIpOwoJfQp9