Generating Permutations at Scale