#include <iostream>
using namespace std;

using T = unsigned long long;

constexpr T gcd(T a, T b) {
	return b == 0 ? a : gcd( b, a % b );
}	

constexpr T binom(T n, T k) {
	if ( k > n - k )
	    k = n - k;
	T p = 1;
	T nn = n;
	for ( T kk = 1; kk <= k; ++kk ) {
		T x = gcd( n - kk + 1, kk );
	    p = p / ( kk / x ) * ( ( n - kk + 1 ) / x );
	}
	return p;
}

constexpr T f(int n) {
	if ( n == 1 )
	    return 1;
    T sum = 0;
	for ( int i = 1; i < n; ++i )
        sum += binom(n,i) * f(i) * f(n-i);
    return sum / 2;
}

int main() {
    for (int i = 1; i < 19; ++i )
    	cout << i << '\t' << f(i) << '\n';
}