mergesort
merges sort