#include <iostream>
using namespace std;
int n,ans,m[14][14];
bool check(int x,int y)
{
for(int i=1;i<=n;i++)if(m[i][y]==1&&i!=x)return false;
for(int j=1;j<=n;j++)if(m[x][j]==1&&j!=y)return false;
for(int i=x,j=y;i>0&&j<=n;i--,j++)if(m[i][j]==1&&(i!=x&&j!=y))return false;
for(int i=x,j=y;i<=n&&j<=n;i++,j++)if(m[i][j]==1&&(i!=x&&j!=y))return false;
for(int i=x,j=y;i>0&&j>0;i--,j--)if(m[i][j]==1&&(i!=x&&j!=y))return false;
for(int i=x,j=y;i<=n&&j>0;i++,j--)if(m[i][j]==1&&(i!=x&&j!=y))return false;
return true;
}
void output_m()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<m[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
}
void dfs(int a,int s)
{
if(s==n)
{
ans++;
if(ans>3)return;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(m[i][j])
{
cout<<j<<" ";
break;
}
}
}
cout<<endl;
return;
}
for(int j=1;j<=n;j++)
{
if(check(a,j))
{
m[a][j]=1;
dfs(a+1,s+1);
m[a][j]=0;
}
}
}
int main()
{
cin>>n;
dfs(1,0);
cout<<ans;
return 0;
}