comparable mergesort