#include<iostream.h>
#include<fstream.h>
#include<math.h>
fstream f("patrate2.in",ios::in), g("patrate2.out",ios::out);
void mult(int p,int x);
void copiere(int w[500],int v[500],int k,int x);
void slap(int a[500],int b,int &n);
int z[500],c[500];
int main()
{
//long long i,n,k,l,o,t=1,p=1;
//f>>n;
/*if(n==1)
cout<<"2";
else
if(n==2)
{ cout<<"32";}
else
{ k=1;l=2;
for(i=3;i<=n;i++)
{ l=4*l;
k*=2;
l-=k;
}
cout<<l<<" "<<k<<" ";
k=pow(n,2);
k=pow(k,2);
k=l*k;
g<<k;
cout<<k;
}*/
/*int p=1,t,n,i;
f>>n;
for(i=1;i<=n;i++)
p*=i;
t=pow(2,n*n);
t*=p;
cout<<t<<endl;*/
int i,n,k;
long long p=1;
z[0]=1;n=0;
f>>k;
for(i=1;i<=k;i++)
{ slap(z,i,n);}
for(i=1;i<=k*k;i++)
slap(z,2,n);
for(i=0;i<=n;i++)
g<<z[i];
return 0;
}
void mult(int p,int x)
{
c[x]=p%10;
p/=10;c[x-1]+=p;
if(c[x-1]>9)
mult(c[x-1],x-1);
}
void copiere(int w[500],int v[500],int k,int x)
{
int i;
if(x==1)
for(i=x;i<=k;i++)
{ w[i-1]=v[i];v[i]=0;}
else
for(i=x-1;i<=k;i++)
{ w[i]=v[i];v[i]=0;}
}
void slap(int a[500],int b,int &n)
{
int j,m=0,l,k,aux;
aux=b;
while(aux)
{ m++;
aux/=10;
}
k=m+n;
while(b)
{ l=k;
for(j=n;j>=0;j--)
{ c[l]+=(b%10*a[j]);
if(c[l]>9)
mult(c[l],l);
l--;
}
k--;
b/=10;
}
k=m+n;
if(c[0]==0)
{ copiere(a,c,k,1);
k--;
}
else
{ copiere(a,c,k,0);}
n=k;
}