row([1,2,3]). row([1,5,9]). row([1,4,7]). row([2,5,8]). row([3,6,9]). row([3,5,7]). row([4,5,6]). row([7,8,9]). /* General Utilities */ element_of(Head, [Head|_]). element_of(X, [_|Tail]) :- element_of(X, Tail). number_of_elements_of(1, [X]):- !. number_of_elements_of(N, [_|X]):- number_of_elements_of(X), N is X+1. append([], List, List). append([X|L1], L2, [X|L3]) :- append(L1, L2, L3).