#include<fstream.h>
long n,p[500],f[500],dp,df,s[500],ds;
void prodc(long x[1000],long dx,long c,long y[1000],long &dy)
{long i,aux,t;
aux=0;
t=0;
for(i=1;i<=dx;i++)
{aux=x[i]*c+t;
t=aux/10;
y[i]=aux%10;
}
dy=dx;
while(t)
{dy++;
y[dy]=t%10;
t/=10;
}
}
void suma(long x[500],long dx,long y[500],long dy,long z[500],long &dz)
{long i,t,aux;
if(dx>dy)
{ for(i=dy+1;i<=dx;++i)
y[i]=0;
dy=dx;
}
else
{for(i=dx+1;i<=dy;++i)
x[i]=0;
dx=dy;
}
aux=t=0;
for(i=1;i<=dx;++i)
{aux=x[i]+y[i]+t;
z[i]=aux%10;
t=aux/10;
}
dz=dx;
if(t)
{++dz;
z[dz]=t;
}
}
ofstream fout("prod.out");
void prod(long x[500],long dx,long y[500],long dy,long z[500],long &dz)
{long j,z1[500],dz1,k,i;
for(i=1;i<=dx;++i)
{prodc(y,dy,x[i],z1,dz1);
k=i-1;
for(j=dz1+k;j>=k+1;--j)
z1[j]=z1[j-k];
for(k=1;k<=i-1;++k)
z1[k]=0;
dz1+=i-1;
fout<<dz1<<'\n';
for(j=dz1;j>=1;--j)
fout<<z1[j]<<" ";
fout<<'\n';
suma(z,dz,z1,dz1,z,dz);
}
}
int main()
{ifstream fin("patrate2.in");
fin>>n;
fin.close();
ofstream fout("patrate2.out");
long i;
p[1]=1;
f[1]=1;
df=1;
dp=1;
for(i=1;i<=n*n;++i)
prodc(p,dp,2,p,dp);
for(i=1;i<=n;++i)
prodc(f,df,i,f,df);
prod(p,dp,f,df,s,ds);
for(i=ds;i>=1;--i)
fout<<s[i];
fout.close();
return 0;
}