def solve_nqueens(n=8, board=None, col=0):
if board is None:
board = [[0] * n for _ in range(n)]
if col == n:
print("\n".join(" ".join("Q" if c else "-" for c in row) for row in board) + "\n")
return
for row in range(n):
if all(board[i][col] == 0 and
(col - (row - i) < 0 or board[i][col - (row - i)] == 0) and
(col + (row - i) >= n or board[i][col + (row - i)] == 0)
for i in range(row)):
board[row][col] = 1
solve_nqueens(n, [r[:] for r in board], col + 1)
board[row][col] = 0
solve_nqueens()