optimal polyphase merge sort