#include<bits/stdc++.h>
using namespace std;
queue<int> f;
int a[100],b[1000],d[100][50],m;
int sum;
int qipan(int x)
{
for(int i=1;i<=m-x+1;i++)
{
int z=f.front();
f.pop();
if(a[z+x]==0&&b[z-x+50]==0)
{
a[z+x]++;b[z-x+50]++;
if(sum<100)
d[sum][x]=z;
if(f.size())
qipan(x+1);
else sum++;
a[z+x]--;b[z-x+50]--;
if(sum<10)
d[sum][x]=0;
}
f.push(z);
}
}
int main()
{
cin>>m;
for(int i=1;i<=m;i++)
f.push(i);
qipan(1);
for(int i=0;i<=2;i++)
for(int j=1;j<=m;j++)
if(d[i][j]==0) d[i][j]=d[i-1][j];
for(int i=0;i<=2;i++)
{
for(int j=1;j<=m;j++)
cout<<d[i][j]<<" ";
cout<<endl;
}
cout<<sum;
return 0;
}