add next_permutation and reverse iter_swap