b_s = 6 def q_attack(col, queens): left=col right=col for r, c in reversed(queens): left=left-1 right=right+1 if c in (left, col, right): return True return False def pos(n): if n == 0: return [[]] smaller_solution= pos(n-1) return [position+[(n,i+1)] for i in range(b_s) for position in smaller_solution if not q_attack(i+1, position)] for output in pos(b_s): print output