Q2: merge sort