split([],[],[],[]).
split([H|T], [H|Ntail], Odd, Even) :- H < 0, split(T, Ntail, Odd, Even).
split([H|T], Neg, [H|Otail], Even) :- H >= 0, ((H rem 2)=:=1), split(T, Neg, Otail, Even).
split([H|T], Neg, Odd, [H|Etail]) :- H >= 0, ((H rem 2)=:=0), split(T, Neg, Odd, Etail).

program :- split([1,2,3,4,-5,-6,7,-8,9,10], X, Y, Z), write(X), write(Y), write(Z), nl.
