//hdu 1023 Train Problem II(组合+大整数)
//卡特兰数列
//另类递归式:h(n)=h(n-1)*(4*n-2)/(n+1);
//该递推关系的解为:h(n)=C(2n,n)/(n+1) (n=1,2,3,...)
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
const int N=109;
struct bignum
{
int num[500];
int len;
bignum():len(0){memset(num,0,sizeof(num));}
}bn[N];
bignum operator *(bignum a,int b)
{
int res=0;
for(int i=1;i<=a.len;i++)
{
a.num[i]=a.num[i]*b+res;
res=a.num[i]/10;
a.num[i]%=10;
}
while(res)
{
a.len++;
a.num[a.len]=res%10;
res=res/10;
}
return a;
}
bignum operator / (bignum a,int b)
{
bignum dnum;
dnum.len=a.len;
int res=0;
for(int i=a.len;i>0;i--)
{
dnum.num[i]=(a.num[i]+res)/b;
res=((a.num[i]+res)%b)*10;
}
for(int i=a.len;i>0;i--)
{
if(dnum.num[i]!=0)
{
dnum.len=i;
break;
}
}
return dnum;
}
void init()
{
bn[1].len=1;
bn[1].num[1]=1;
for(int i=2;i<N-1;i++)
{
bn[i]=bn[i-1]*(4*i-2)/(i+1);
}
}
int main()
{
init();
int n;
while(cin>>n)
{
for(int i=bn[n].len;i>0;i--)
{
cout<<bn[n].num[i];
}
cout<<endl;
}
return 0;
}
09-07