from mpmath import mp
mp.dps = 120
def D(n):
    if not isinstance(n, int) or n < 3:
        raise ValueError("n must be an integer at least 3")
    k = (n - 1) // 2
    if n % 2:
        return mp.fprod(mp.mpf(2*j)**(k-j) * mp.pi**j /
                        mp.sqrt(mp.mpf(2*j+1)**(2*j+1))
                        for j in range(1, k+1))
    return (2 * mp.pi**(mp.mpf((k+1)**2)/2) /
            mp.gamma(mp.mpf(k+1)/2) *
            mp.fprod(mp.mpf(2*j-1)**(k+1-j)/mp.mpf(2*j)**j
                     for j in range(1, k+2)))
for n in range(3, 23):
    print(n, mp.nstr(D(n), 100))