Implement MergeSort