#来了,是八皇后!
k = int(input())
bloc = []
bloc = [0 for i in range(k)]
table = [bloc[:] for i in range(k)]
#记录下答案
answer_number = 0
#代码重构times:5
#检查某个格子是否可以合法放置
def check(matrix,x,y):
for i in range(k):
if matrix[i][y] == 1: return False
i, j = x-1, y-1
while i>= 0 and j>=0:
if matrix[i][j] == 1: return False
i-=1
j-=1
i,j = x-1,y+1
while i>=0 and j<k:
if matrix[i][j] == 1: return False
i-=1
j+=1
return True
#DFS函数
def DFS(row):
if row == k :
global answer_number
answer_number+=1
if answer_number < 4:
for i in range(k):
for j in range(k):
if table[i][j] == 1: print(j+1,end = ' ')
print()
return
for i in range(k):
if check(table,row,i):
table[row][i] = 1
DFS(row+1)
table[row][i] = 0
DFS(0)
print(answer_number)