add 3-way partition/quicksort