Как генерировать перестановки, где a [i]! = I?

Предположим, у меня есть массив целыхint a[] = {0, 1, ... N-1}, гдеN&nbsp;это размерa, Теперь мне нужно сгенерировать все перестановкиa&nbsp;с этимa[i] != i&nbsp;для всех0 <= i < N, Как бы Вы это сделали?