chain([H|T],Out):-chain([H|T],[H],Out).chain([H|T],I,Out):-next(H,[H|T],H2),append(I,[H2],I2),chain(T,I2,Out),!;Out=I.next(X,L,Out):-findall(Y,nextto(X,Y,L),O),random_member(Out,O).