complete merge sort