c# mergesort port complete