parallel implementation of merge sort