#include <set>
#include <bitset>
#include <list>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <string>
#include <vector>
#include <ios>
#include <iostream>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <algorithm>
#include <utility>
#include <complex>
#include <numeric>
#include <functional>
#include <cmath>
#include <ctime>
#include <climits>
#include <cstdarg>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cassert>
#define lson rt << 1, l, m
#define rson rt << 1 | 1, m + 1, r
using namespace std;
const int INF = 0x7FFFFFFF;
const int MOD = 1000000000 + 7;
const double EPS = 1e-10;
const double PI = 2 * acos (0.0);
const int maxn = 10000 + 66;
string Mul (string a, long long b)//高精度a乘单精度b
{
string ans;
long long na[maxn], La = a.size ();// maxn表示相乘结果的最大可能位数
fill (na, na + maxn, 0);
for (long long i = La - 1; i >= 0; i--)
na[La-i-1] = a[i] - '0';
long long w = 0;
for (long long i = 0; i < La; i++)
{
na[i] = na[i] * b + w;
w = na[i] / 10;
na[i] = na[i] % 10;
}
while (w)
{
na[La++] = w % 10;
w /= 10;
}
La--;
while (La >= 0) ans += na[La--] + '0';
return ans;
}
string Div (string a, long long b)//高精度a除以单精度b
{
string r;
long long d = 0;
if(a == "0")
return a;//特判
for (long long i = 0; i < a.size (); i++)
{
r += (d * 10 + a[i] - '0') / b + '0';//求出商
d = (d * 10 + (a[i] - '0')) % b;//求出余数
}
long long p = 0;
for (long long i = 0; i < r.size (); i++)
if (r[i] != '0')
{
p = i;
break;
}
return r.substr (p);
}
string Catalan (long long val)
{
string a("1");
for (long long i = 1; i <= val; i++)
{
a = Mul (a, (4 * i - 2));
a = Div (a, (i + 1));
}
return a;
}
int main()
{
// ifstream cin ("aaa.txt");
long long n;
int flag = 1;
while (cin >> n)
{
if (n == -1)
break;
cout << flag++ << " " << n << " " << Mul (Catalan (n), 2) << endl;
}
return 0;
}