#include<stdio.h>
void merge(int arr[],int arr1[],int size1,int arr2[],int size2){
int i = 0,j = 0,k = 0;
while(i < size1 && j < size2){
if(arr1[i] <= arr2[j]){
arr[k++] = arr1[i++];
}else{
arr[k++] = arr2[j++];
}
}
while(i < size1){
arr[k++] = arr1[i++];
}
while(j < size2){
arr[k++] = arr2[j++];
}
}
void mergesort(int arr[],int n){
if (n <= 1) return;
int mid = n / 2;
int arr1[mid];
int arr2[n - mid];
for (int i = 0; i < mid; i++) {
arr1[i] = arr[i];
}
for (int i = mid; i < n; i++) {
arr2[i - mid] = arr[i];
}
mergesort(arr1, mid);
mergesort(arr2, n - mid);
merge(arr, arr1, mid, arr2, n - mid);
}
int main() {
int arr[10] = {3, 6, 7, 4, 9, 1, 2, 9, 6, 4};
int n = 10;
mergesort(arr, n);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}