member(X,[X|_]) :- !.
member(X,[_|T]) :- member(X,T).
set(A,B) :- set(A, B, []).
set([],[],_).
set([H|T],[H|Out],Seen) :- not(member(H,Seen)), set(T,Out, [H|Seen]).
set([H|T],Out, Seen) :- member(H,Seen), set(T,Out,Seen).
:- set
([a
,b
,a
,c
,b
,a
], R
), write(R
), nl.
bWVtYmVyKFgsW1h8X10pIDotICEuCm1lbWJlcihYLFtffFRdKSA6LSBtZW1iZXIoWCxUKS4Kc2V0KEEsQikgOi0gc2V0KEEsIEIsIFtdKS4Kc2V0KFtdLFtdLF8pLgpzZXQoW0h8VF0sW0h8T3V0XSxTZWVuKSA6LSBub3QobWVtYmVyKEgsU2VlbikpLCBzZXQoVCxPdXQsIFtIfFNlZW5dKS4Kc2V0KFtIfFRdLE91dCwgU2VlbikgOi0gbWVtYmVyKEgsU2VlbiksIHNldChULE91dCxTZWVuKS4KCjotIHNldChbYSxiLGEsYyxiLGFdLCBSKSwgd3JpdGUoUiksIG5sLg==