completed merge sort