#!/usr/bin/python3

from collections import defaultdict
from fractions import Fraction
from math import log
import sys

tab = defaultdict(float)
init_pills = 30
#zero = Fraction(0,1)
#one = Fraction(1,1)
zero = 0.0
one = 1.0

def prob(m, n):
    if m == 0 and n == 0:
        return zero

    key = f'{m},{n}'
    if key in tab:
        return tab[key]

    if n < 0:
        return zero
    elif m * 2 + n > init_pills * 2:
        return zero
    elif m == init_pills:
        if n == 0:
            return one
        else:
            return zero
    elif m == 0:
        return prob(m+1, n-1) * (m+1)/(m+n)
    else:
        p = prob(m+1, n-1) * (m+1)/(m+n) + \
            prob(m  , n+1) * (n+1)/(m+n+1)

#    print(key, "=>", p)
    tab[key] = p
    return p

def expected():
    ev = 0
    for n in range(1, init_pills+1):
        ev += n * prob(0, n)
    return ev

# for m in range(init_pills+1):
#     print("%4d " % m, end="")
#     for n in range(init_pills+1):
#         p = prob(m,n)
#         if p > 0:
#             print("%0.3f " % prob(m, n), end="")
#         else:
#             print("      "             , end="")
#     print()

#print("expected:", expected())
#print("approx:", float(expected()))
#print("guess:", log(init_pills) * 30.0/11.0 - 5.33)
for n in range(1, init_pills+1):
    p = prob(0,n)
    if "e" in str(p):
        break
    print(f'{n},{prob(0,n)}')
