Pure merge sort