#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define SIZE 8

int main() {
    int board[SIZE][SIZE];
    int queensPlaced = 0;
    
    srand(time(NULL));

    while (queensPlaced < SIZE) {
        for (int r = 0; r < SIZE; r++) {
            for (int c = 0; c < SIZE; c++) {
                board[r][c] = 0;
            }
        }
        queensPlaced = 0;
        
        for (int q = 0; q < SIZE; q++) {
            int validMoves = 0;
            for (int r = 0; r < SIZE; r++) {
                for (int c = 0; c < SIZE; c++) {
                    if (board[r][c] == 0) {
                        validMoves++;
                    }
                }
            }
            
            if (validMoves == 0) {
                break;
            }
            
            int move = rand() % validMoves;
            int count = 0;
            int placed = 0;
            
            for (int r = 0; r < SIZE && !placed; r++) {
                for (int c = 0; c < SIZE && !placed; c++) {
                    if (board[r][c] == 0) {
                        if (count == move) {
                            board[r][c] = 1;
                            queensPlaced++;
                            placed = 1;
                            
                            for (int i = 0; i < SIZE; i++) {
                                for (int j = 0; j < SIZE; j++) {
                                    if (board[i][j] == 0 && !(i == r && j == c)) {
                                        if (i == r || j == c || (i - j) == (r - c) || (i + j) == (r + c)) {
                                            board[i][j] = -1;
                                        }
                                    }
                                }
                            }
                        }
                        count++;
                    }
                }
            }
        }
    }

    for (int r = 0; r < SIZE; r++) {
        for (int c = 0; c < SIZE; c++) {
            if (board[r][c] == 1) {
                printf(" Q ");
            } else {
                printf(" . ");
            }
        }
        printf("\n");
    }

    return 0;
}