gen_permutations function

generate permutations