#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <math.h>
#include <string.h>
#include <iostream>
#include <string>
#include <time.h>
#include <queue>
#include <list>
#include <map>
#include <set>
#include <vector>
#include <stack>
#include <bitset>
using namespace std;
const long long N=3e5+5;
int n,a[50],b[50],c[50],ans[50],sum;//a标记列,b,c标记对角线
void dfs(int i){
int j;
if(i>n){
sum++;
if(sum>3) return ;
else {
for(int m=1;m<n;m++){
printf("%d ",ans[m]);
}
cout<<ans[n]<<endl;;
}
}
for(j=1;j<=n;j++){
if(a[j]==0 && b[i+j]==0 && c[i-j+n]==0 )
{
ans[i]=j;//标记
a[j]=1;
b[j+i]=1;
c[i-j+n]=1;
dfs(i+1);//搜索下一行
a[j]=0;//回溯
b[i+j]=0;
c[i-j+n]=0;
}
}
}
int main()
{
cin>>n;
dfs(1);
cout<<sum<<endl;
return 0;
}