Generate all unique permutations by sorting the input and recursing with a functionally-sliced `choices` array — dedup collapses to a `choices[i] === choices[i-1]` sibling-skip.