array[0..9] of var 0..9: queens;
int: n;

n = 10;

queens(N) :-
  queens(N, 0).

queens(N, I) :-
  I < N,
  queens(N, I, I + 1),
  queens(N, I + 1).
queens(N, N).

queens(N, I, J) :-
  J < N,
  queens[I] != queens[J],
  queens[I] + I != queens[J] + J,
  queens[I] - I != queens[J] - J,
  queens(N, I, J + 1).
queens(N, _, N).

include "prolog.plz";

labeling_list([], _, _).
labeling_list([H | T], Min, Max) :-
    between(Min, H, Max),
    labeling_list(T, Min, Max).

:- queens(n), labeling_list(queens, 0, n - 1).

output [show(queens)];