#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int n,p[15],cnt,b[15];
double xie(int x1,int y1,int x2,int y2)
{
return abs(x1-x2)/abs(y1-y2);
}
bool check()
{
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++)
{
if(++b[p[i]]==2)
return 0;
}
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
if(xie(p[i],p[j],i,j)==1||xie(p[i],p[j],i,j)==-1)
return 0;
}
return 1;
}
void dfs(int step)
{
if(step>n)
{
if(check())
{
cnt++;
if(cnt<=3)
{
for(int i=1;i<=n;i++)
cout<<p[i]<<" ";
cout<<endl;
}
}
return;
}
for(int i=1;i<=n;i++)
{
p[step] = i;
dfs(step+1);
}
}
int main(){
cin>>n;
dfs(1);
cout<<cnt;
return 0;
}