queen(L):- write('What is the value of N?'),
		   nl,
		   read_integer(N),
		   length(L,N),
		   fd_domain(L,1,N),
		   correct_conf(L),
		   fd_labeling(L).
		   
correct_conf([]).
correct_conf([X|L]):- noattack(X,L,1),
					  correct_conf(L).

noattack(X,[],_).					  
noattack(X,[Y|L],I):- safe_pos( X,Y,I),
					  I1 is I+1,
					  noattack(X,L, I1).
					  
safe_pos(X,Y,I):- X #\=Y,
				  X #\= Y+I,
				  X + I #\= Y. 