
flatten([], []).
flatten([H|T], [H|R]) :- \+(list(H)), flatten(T, R).
flatten([H|T], [E|R]) :- list(H), flatten(H,[E|R1]), 
                         flatten(T, R2), append(R1, R2, R).
