def nqueens(n):
    if n<4: raise ValueError('Question requires N >= 4')
    col=[-1]*n
    def place(r):
        if r==n: return True
        for c in range(n):
            if all(col[i]!=c and abs(col[i]-c)!=r-i for i in range(r)):
                col[r]=c
                if place(r+1): return True
                col[r]=-1
        return False
    found=place(0)
    print('Solution found:',found)
    if found:
        assert all(col[i]!=col[j] and abs(col[i]-col[j])!=abs(i-j)
                   for i in range(n) for j in range(i))
        for c in col: print(' '.join('Q' if j==c else '.' for j in range(n)))
    return col if found else None


n = int(input("Enter N (at least 4): "))
solution = nqueens(n)
if solution is not None:
    print("Queen columns, row by row:", solution)
    print("Verified: no shared column or diagonal.")
