p130.cpp
======================
#include <bits/stdc++.h>
#define endl '\n'

// #pragma GCC optimize ("O3")
// #pragma GCC target ("sse4")

using namespace std;
template<class T, class T2>
inline void chkmax(T& x, const T2& y) {
    if(x < y) {
        x = y;
    }
}
template<class T, class T2>
inline void chkmin(T& x, const T2& y) {
    if(x > y) {
        x = y;
    }
}
const int MAXN = (1 << 10);

int n;

void read() { cin >> n; }

int64_t C[MAXN];

void solve() {
    C[0] = 1;
    for(int i = 1; i <= n; i++) {
        for(int j = 0; j < i; j++) {
            C[i] += C[j] * C[i - j - 1];
        }
    }

    cout << C[n] << " " << n + 1 << endl;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    read();
    solve();
    return 0;
}

=================
statement.txt
======================
130. Circle

time limit per test: 0.25 sec.
memory limit per test: 4096 KB


On a circle border there are 2k different points A1, A2, ..., A2k, located contiguously. These points connect k chords so that each of points A1, A2, ..., A2k is the end point of one chord. Chords divide the circle into parts. You have to find N - the number of different ways to connect the points so that the circle is broken into minimal possible amount of parts P.


Input

The first line contains the integer k (1 <= k <= 30).


Output

The first line should contain two numbers N and P delimited by space.


Sample Input

2
Sample Output

2 3
Author	: Natalia L. Andreeva, Alex Y. Suslov, Alexander S. Ivanov
Resource	: 5th Southern Subregional Contest. Saratov 2002
Date	: 2002-10-10


=================
