:- use_module(library(clpfd)).
queens (N, Qs) :- length (Qs, N), Qs ins 1..N, safeColumn(Qs), labeling([ffc], Qs).
safeColumn([]).
safeColumn([Q|Qs]) :- safeColumn(Qs, Q, 1), safeColumn(Qs).
safeColumn([],_,_).
safeColumn
([Q
|Qs
], SelQ
, Diagoff
) :- SelQ #\
= Q
, abs(SelQ
- Q
) #\
= DiagOff
, DiagOff1 #
= DiagOff
+ 1, safeColumn
(Qs
, SelQ
, DiagOff1
).
Oi0gdXNlX21vZHVsZShsaWJyYXJ5KGNscGZkKSkuCgpxdWVlbnMgKE4sIFFzKSA6LSBsZW5ndGggKFFzLCBOKSwgUXMgaW5zIDEuLk4sIHNhZmVDb2x1bW4oUXMpLCBsYWJlbGluZyhbZmZjXSwgUXMpLgoKc2FmZUNvbHVtbihbXSkuCnNhZmVDb2x1bW4oW1F8UXNdKSA6LSBzYWZlQ29sdW1uKFFzLCBRLCAxKSwgc2FmZUNvbHVtbihRcykuCgpzYWZlQ29sdW1uKFtdLF8sXykuCnNhZmVDb2x1bW4oW1F8UXNdLCBTZWxRLCBEaWFnb2ZmKSA6LSBTZWxRICNcPSBRLCBhYnMoU2VsUSAtIFEpICNcPSBEaWFnT2ZmLCBEaWFnT2ZmMSAjPSBEaWFnT2ZmICsgMSwgc2FmZUNvbHVtbihRcywgU2VsUSwgRGlhZ09mZjEpLgoK