nmax = 1000

def niceprint(v):
    if v<10**10: return v
    return "%10.5e"%v

catalan = {0:1}
for n in range(1,nmax+1):
  catalan[n] = catalan[n-1]*(4*n-2) /(n+1)
  if n<10: print n,catalan[n], "*  ",
s0 = (0,0,0)
ch = {s0:1}
optn = {0:1}
print

for n in range(1,nmax+1):
    for i1 in range(n/3+1):
        for i2 in range(i1,(n-i1)/2 +1):
            i3=n-i1-i2
            #print n,i1,i2,i3
            s = 0
            for (j,j1,j2) in (i1,i2,i3),(i2,i1,i3),(i3,i1,i2):
                for i in range(1,j+1):
                    rest = j-i
                    if   rest <= j1: r=(rest,j1,j2)
                    elif rest <= j2: r=(j1,rest,j2)
                    else: r=(j1,j2,rest)
                    s += ch[r]*catalan[i-1]
            ch[i1,i2,i3] = s
    n3 = n//3
    n31 = (n+1)//3
    #n3=0; n31=n//2 ## Two arcs give the Catalan numbers
#    n3=0; n31=0 ## One arc gives the Catalan numbers
    tup = n3,n31,n-n3-n31
    optn[n] = ch[tup]
    print n,  niceprint(catalan[n]), \
    tup,  niceprint(ch[tup]), \
    ch[tup]/float(optn[n-1]),\
        ((ch[tup]/float(optn[n-3]))**(1/3.) if n>2 else "")

#print ch
