
import pprint as pp


def isSol(board):
    # Each row must have 1 queen
    for i in range(8):
        nQueens = 0
        for j in range(8):
            nQueens += board[i][j]
#           print("(", i, ",", j, ") ", end="")
#       print()
        if ( nQueens > 1 ):
            return False


    # Each column must have 1 queen
    for j in range(8):
        nQueens = 0
        for i in range(8):
            nQueens += board[i][j]
#           print("(", i, ",", j, ") ", end="")
#       print()
        if ( nQueens > 1 ):
            return False

    # Each falling diagonal must have 1 queen
    for i in range(7):
	# Top half
        nQueens = 0
        for j in range(8):
            if ( j+i < 8 ):
               nQueens += board[j][j+i]
#              print("(", j, ",", j+i, ") ", end="")
#       print()
        if ( nQueens > 1 ):
            return False

    for i in range(1,7):
	# Bottom half
        nQueens = 0
        for j in range(0, 7):
            if ( j+i < 8 ):
               nQueens += board[j+i][j]
#              print("(", j+i, ",", j, ") ", end="")
#       print()
        if ( nQueens > 1 ):
            return False

    # Each rising diagonal must have 1 queen
    for i in range(1,8):
        # Top half
        nQueens = 0
        for j in range(8):
            if ( i-j >= 0 ):
               nQueens += board[i-j][j]
#              print("(", i-j, ",", j, ") ", end="")
#       print()
        if ( nQueens > 1 ):
            return False

    for i in range(1,7):
        # Top half
        nQueens = 0
        for j in range(8):
            if ( 8-i-j >= 0 and i+j < 8 ):
               nQueens += board[i+j][8-1-j]
#              print("(", i+j, ",", 8-1-j, ") ", end="")
#       print()
        if ( nQueens > 1 ):
            return False

    return True



board = [ [0, 0, 1, 0, 0, 0, 0, 0],
          [0, 0, 0, 0, 0, 1, 0, 0],
	  [0, 0, 0, 0, 0, 0, 0, 1],
	  [1, 0, 0, 0, 0, 0, 0, 0],
	  [0, 0, 0, 1, 0, 0, 0, 0],
	  [0, 0, 0, 0, 0, 0, 1, 0],
	  [0, 0, 0, 0, 1, 0, 0, 0],
	  [0, 1, 0, 0, 0, 0, 0, 0]
        ]


#-----------------
# Test isSol()
#-----------------
#pp.pp(board)
#print( isSol(board) )
#exit()

for r0 in range(8):
 for r1 in range(8):
  for r2 in range(8):
   for r3 in range(8):
    for r4 in range(8):
     for r5 in range(8):
      for r6 in range(8):
       for r7 in range(8):
        board = [ [0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 0, 0, 0, 0, 0, 0],
                  [0, 0, 0, 0, 0, 0, 0, 0]
                ]
        board[0][r0] = 1
        board[1][r1] = 1
        board[2][r2] = 1
        board[3][r3] = 1
        board[4][r4] = 1
        board[5][r5] = 1
        board[6][r6] = 1
        board[7][r7] = 1
        if ( isSol(board) ):
           pp.pp(board)
           print()

