generate full permutation