#include<bits/stdc++.h>
#include <cstring>
#include <iomanip>
using namespace std;
const int N = 105;
int path[N];
bool col[N]={false} , dg[N]={false} ,rdg[N]= {false};
int n,cnt= 0;
void dfs(int u){
if(u == n){
cnt++;
if(cnt <=3){
for(int i = 0 ;i< n;i++) cout << path[i] <<" ";
cout << "\n";
}
return ;
}
for(int i = 1 ; i<=n;i++){
if(!col[i] && !dg[i+u] && !dg[n-i+u]){
path[u] = i;
col[i] = dg[u+i] = rdg[n-i+u] = true;
dfs(u+1);
col[i] = dg[u+i] = rdg[n-i+u]= false;
}
}
}
int main()
{
cin >> n;
dfs(0);
cout << cnt;
return 0;
}