8queen

def solve(board, col):
if col == 8:
return True

for row in range(8):
if all(board[row][i] == 0 for i in range(col)) and \
all(board[row-i][col-i] == 0 for i in range(min(row, col) + 1)) and \
all(board[row+i][col-i] == 0 for i in range(min(8-row, col + 1))):

board[row][col] = 1

if solve(board, col + 1):
return True

board[row][col] = 0

return False

board = [[0] * 8 for _ in range(8)]

if solve(board, 0):
for r in board:
print(" ".join("Q" if x else "." for x in r))
else:
print("No solution")