#include<bits/stdc++.h>
using namespace std;
//p1219 八皇后 Checker Challenge
int n;
int cnt;				//记数 
int arr[1024];			//记录状态 
char map1[1024][1024];	//地图 

//dfs按行递归,找到会进入下一行,所以不用进行同行判断 
bool check(int k){
   
	for(int i=0;i<k;i++)
	{
   	
		if(arr[i]==arr[k]||abs(k-i)==abs(arr[k]-arr[i])){
   
			return false;
		}
	}
	return true;
}

void dfs(int k){
   
	if(k==n)//皇后安排完 
	{
   
		cnt++;//记数 
		if(cnt<=3){
   
			for(int i=0;i<n;i++){
   
				for(int j=0;j<n;j++){
   
					if(map1[i][j]=='&'){
   
						cout<<j+1<<" ";//输出坐标 
					}
				}
			}
			cout<<endl;
		}
		
		return;//返回 
	}
	for(int i=0;i<n;i++){
   
		arr[k]=i; 
		if(check(k)){
   
			map1[k][i]='&';	//皇后 
			dfs(k+1);		//深搜 
			map1[k][i]='*';	//回溯 
		}
	}
	
} 

int main(){
   
	cin>>n;
	for(int i=0;i<n;i++){
   
		for(int j=0;j<n;j++){
   
			map1[i][j]='*';//初始 
		}
	}
	dfs(0);
	cout<<cnt<<endl;
}