First implementation, merge sort, recursion