Merge Sort implementation