flatten([X|Xs] ,Ys) :-
    flatten(X,Ys1), flatten(Xs,Ys2), append(Ys1,Ys2,Ys).
flatten([],[]).
flatten(X,[X]) :- atomic(X).

:- flatten([[1,2],[3,4],[5,[6,7]],[],[[],8]], X), write(X), nl, fail.
