#include<bits/stdc++.h>
using namespace std;
const int N=15;
int col[N],vis1[2*N],vis2[2*N];
int a[N];
int n;
int cnt=0;
void dfs(int k);
int main(){
scanf("%d",&n);
dfs(1);
printf("%d\n",cnt);
return 0;
}
void dfs(int k){
if(k==n+1){
cnt++;
if(cnt<=3){
for(int i=1;i<=n;i++){
printf("%d ",a[i]);
}
printf("\n");
}
return;
}
for(int j=1;j<=n;j++){
if(col[j]) continue;
if(vis1[k-j+n]) continue;
if(vis2[k+j]) continue;
a[k]=j;
col[j]=1,vis1[k-j+n]=1,vis2[k+j]=1;
dfs(k+1);
col[j]=0,vis1[k-j+n]=0,vis2[k+j]=0;
}
}