safe[q_List, n_] := With[{l = Length@q}, Length@Union@q == Length@Union[q + Range@l] == Length@Union[q - Range@l] == l] nQueen[q_List: {}, n_] := If[safe[q, n], If[Length[q] == n, {q}, Cases[nQueen[Append[q, #], n] & /@ Range[n], Except[{Null} | {}], {2}]], Null]