#include<cstdio>
#include<iostream>
#define LL long long
#define mx 1000
using namespace std;
inline LL read()
{
LL x=0,f=1;char ch=getchar();
while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
return x*f;
}
struct gaojing{
int len;
int a[mx+10];
}mult,ans,zero,one;
inline void set0(gaojing &s)
{
s.len=1;
for (int i=1;i<=mx+5;i++)s.a[i]=0;
}
inline void inputn(gaojing &a)
{
set0(a);
char ch=getchar();
while (ch<‘0‘||ch>‘9‘)ch=getchar();
while (ch>=‘0‘&&ch<=‘9‘)
{
a.a[a.len++]=ch-‘0‘;
ch=getchar();
}
a.len--;
int change[mx+15];
for (int i=1;i<=a.len;i++)
change[i]=a.a[i];
for (int i=1;i<=a.len;i++)
a.a[i]=change[a.len-i+1];
while (a.a[a.len]==0)a.len--;
}
inline void put(gaojing a)
{
for (int i=a.len;i>=1;i--)printf("%d",a.a[i]);
printf("\n");
}
inline gaojing operator + (const gaojing &a,const gaojing &b)
{
gaojing c;set0(c);
int maxlen=max(a.len,b.len);
for (int i=1;i<=maxlen;i++)
{
c.a[i]=c.a[i]+a.a[i]+b.a[i];
if (c.a[i]>=10)
{
c.a[i+1]+=c.a[i]/10;
c.a[i]%=10;
}
}
c.len=maxlen+4;
while (!c.a[c.len]&&c.len>1) c.len--;
return c;
}
inline gaojing operator * (const gaojing &a,const gaojing &b)
{
gaojing c;set0(c);
for(int i=1;i<=a.len;i++)
for (int j=1;j<=b.len;j++)
c.a[i+j-1]+=a.a[i]*b.a[j];
c.len=a.len+b.len+5;
for (int i=1;i<=c.len;i++)
{
c.a[i+1]+=c.a[i]/10;
c.a[i]%=10;
}
while (!c.a[c.len]&&c.len>1)c.len--;
return c;
}
inline gaojing operator ^(const gaojing &a,int p)
{
gaojing ans=one,mult=a;
while (p)
{
if (p&1)ans=ans*mult;
mult=mult*mult;
p>>=1;
}
return ans;
}
inline void chushihua()
{
set0(zero); zero.len=1;
set0(one);one.len=1;one.a[1]=1;
}
int n,len,now;
bool mrk[1010];
int prime[1010],rep[1010],mn[1010];
inline void getprime()
{
for (int i=2;i<=2*n;i++)
{
if (!mrk[i])prime[++len]=i,mn[i]=len;
for (int j=1;prime[j]*i<=2*n&&j<=len;j++)
{
mrk[prime[j]*i]=1;
mn[prime[j]*i]=j;
if (i%prime[j]==0)break;
}
}
}
inline void calc(int x,int f)
{
while (x!=1)
{
rep[mn[x]]+=f;
x/=prime[mn[x]];
}
}
int main()
{
chushihua();ans=one;mult=one;
n=read();
getprime();
for (int i=n+2;i<=2*n;i++)calc(i,1);
for (int i=1;i<=n;i++)calc(i,-1);
for (int i=2;i<=2*n;i++)
{
mult=mult+one;
if (mrk[i])continue;else now++;
if (rep[now])ans=ans*(mult^rep[now]);
}
put(ans);
}