
class s:
total = 0
n = 0
def attack(self, row, col):
for c, r in self.cols.items():
if c - r == col - row or c + r == col + row:
return True
return False
def search(self, row):
if row == self.n:
self.total += 1
return
for col in range(self.n):
if col in self.cols:
continue
if self.attack(row, col):
continue
self.cols[col] = row
self.search(row + 1)
del self.cols[col]
def totalNQueens(self, n):
self.n = n
self.cols = {}
self.search(0)
return self.total
n = int(input())
solution = s()
solution.totalNQueens(n)
a = solution.total
class sol:
all1 = 0
def n_queen(self,n):
self.helper([-1]*n,0,n)
def helper(self,col,row,n):
if(row == n):
self.printer(col,n)
return
for i in range(n):
col[row] = i
if(self.isv(col,row)):
self.helper(col,row+1,n)
def isv(self,col,row):
for i in range(row):
if col[i] == col[row]:
return False
elif abs(col[i]-col[row]) == row-i:
return False
return True
def printer(self,col,n):
if(self.all1 == 3):
print(a)
exit()
for row in range(n):
line = ''
for i in range(n):
if col[row] == i:
print(i+1,end=' ')
print()
self.all1+=1
sol = sol()
sol.n_queen(n)