#include<bits/stdc++.h>
using namespace std;
int mp[41][41];
int b[41];
int n,ans=0,k=1;
void dfs(int s)
{
if(s>n&&k<=3)
{
ans++;k++;
for(int i=1;i<=n;i++)
printf("%d ",b[i]);
printf("\n");
return;
}
if(s>n&&k>3)
{
ans++;
return;
}
for(int i=1;i<=n;i++)
{
int flag=1;
for(int j=1;j<=n;j++)
if(mp[j][i]!=0)
{
flag=0;break;
}
if(flag==0)
continue;
for(int j=1;j<=s+i-1;j++)
if(mp[j][s+i-j]!=0)
{
flag=0;break;
}
if(flag==0)
continue;
if(s-i>=0)
{
int p=s-i;
for(int j=1;j+p<=n;j++)
if(mp[j+p][j]!=0)
{
flag=0;break;
}
if(flag==0)
continue;
}
else
{
int p=i-s;
for(int j=1;j+p<=n;j++)
if(mp[j][j+p]!=0)
{
flag=0;break;
}
if(flag==0)
continue;
}
mp[s][i]=1;b[s]=i;
dfs(s+1);
mp[s][i]=0;b[s]=0;
}
return;
}
int main()
{
scanf("%d",&n);
dfs(1);
printf("%d",ans);
return 0;
}