#include<bits/stdc++.h>
using namespace std;
int A[15][15],n,ans,R[5][15];
vector <int> q;
void fang(int x,int y)
{
for(int i=1;i<=n;i++) A[x][i]++,A[i][y]++;
for(int i=1;i<=n;i++)
{
if(x+i<=n&&y+i<=n)A[x+i][y+i]++;
if(x-i>=1&&y-i>=1)A[x-i][y-i]++;
if(x+i<=n&&y-i>=1)A[x+i][y-i]++;
if(x-i>=1&&y+i<=n)A[x-i][y+i]++;
}
}
void na(int x,int y)
{
for(int i=1;i<=n;i++) A[x][i]--,A[i][y]--;
for(int i=1;i<=n;i++)
{
if(x+i<=n&&y+i<=n)A[x+i][y+i]--;
if(x-i>=1&&y-i>=1)A[x-i][y-i]--;
if(x+i<=n&&y-i>=1)A[x+i][y-i]--;
if(x-i>=1&&y+i<=n)A[x-i][y+i]--;
}
}
void search(int r,int t)
{
if(t==n+1)
{
if(ans<3)
{
for(int i=0;i<q.size();i++) R[ans][i]=q[i];
}
ans++;
}
else
{
for(int i=1;i<=n;i++)
{
if(A[i][t]!=0) continue;
fang(i,t);
q.push_back(i);
search(r,t+1);
na(i,t);
q.pop_back();
}
}
}
int main()
{
cin>>n;
search(n,1);
for(int i=0;i<=2;i++)
{
for(int j=0;j<n;j++)
{
cout<<R[i][j]<<" ";
}
cout<<endl;
}
cout<<ans;
return 0;
}