место(E, L, [E|L]).
место(E, [H|L], [H|Y]):-  место(E, L,Y).

перестановка([],[]).
перестановка([H|L],Z):- перестановка(L,Y), место(H,Y,Z).

все_перестановки(L):- перестановка(L,R), write(R), nl, fail.


:- все_перестановки(['прекрасная маркиза', 'ваши прекрасные глаза', 
        'сулят мне смерть от любви']).

:- все_перестановки(['казнить', 'нельзя', 'помиловать']).
