//卡特兰数递归实现:超时
/*#include <iostream>
using namespace std;
int catalan(int n){
if (n == 1) return 1;
if (n == 2) return 1;
int res = 0;
for (int i = 1; i <= n - 1;i++){
res += catalan(i)*catalan(n - i);
}
return res;
}
int main(){
int n;
while (cin >> n){
cout << catalan(n-1) << endl;
}
return 0;
}*/
//卡特兰数非递归实现
#include <iostream>
using namespace std;
int arr[22];
int catalanNumber(int n){
int arr[22];
arr[1]=1;
for(int i=2;i<n+1;i++){
arr[i]=0;
for(int j=1;j<i;j++)
arr[i]+=arr[j]*arr[i-j];
}
return arr[n];
}
int main(){
int n;
while (cin >> n){
cout << catalanNumber(n-1) << endl;
}
return 0;
}