#include "iostream"
using namespace std;
void merge(int a[],int l,int m,int r)
{
int i,j,k;
int n1 = m-l+1;
int n2 = r-m;
int *L = new int[n1];
int *R = new int[n2];
for(i=0;i<n1;i++)
L[i]=a[l+i];
for(j=0;j<n2;j++)
R[j]=a[m+1+j];
i = 0;
j = 0;
k = l;
while(i<n1&&j<n2)
{
if(L[i]<R[j])
a[k++] = L[i++];
else
a[k++] = R[j++];
}
while(i<n1)a[k++] = L[i++];
while(j<n2)a[k++] = R[j++];
}
void mergesort(int a[],int l,int r)
{
if(l>=r)return;
int m = (r+l)/2;
mergesort(a,l,m);
mergesort(a,m+1,r);
merge(a,l,m,r);
}
int main()
{
int a[10] = {9,8,7,6,5,4,3,2,1,0};
mergesort(a,0,9);
for(int i =0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}