generalized permutation