final merge sort