merge sort use recursion