merge sort using iterative recursive