#!/usr/bin/env python3
from random import uniform, randint
from fractions import Fraction
def too_large(n, k, q):
    p = Fraction(q)

    V = [X for X in range(1<<n) if bin(X).count('1') < k]

    d = len(V)
    A = [[0]*(d+1) for _ in range(d)]
    for (i, X) in enumerate(V):
        X0 = 2*X % (1<<n)
        X1 = (2*X+1) % (1<<n)
        A[i][i] = 1
        A[i][d] = 1
        A[i][V.index(X0)] -= 1-p
        if X1 in V: A[i][V.index(X1)] -= p

        
    for i in range(d):
        m = Fraction(1)/A[i][i]
        for k in range(d+1):
            A[i][k] *= m

        for j in range(d):
            if j == i: continue
            m = A[j][i]
            for k in range(d+1):
                A[j][k] -= A[i][k]*m

    return A[0][d] > Fraction(1e9)

x = 1
def make_test(n, m, p):
    global x
    if too_large(n, m, p):
        return
    print("echo %d %d %.4f > ../data/secret/%s.in" % (n, m, p, str(x).zfill(3)))
    x += 1
    
def rand(n, m, l, h):
    make_test(n, m, uniform(l, h))
def full_rand():
    n = randint(1, 6)
    make_test(n, randint(1, n), uniform(0, 1))





print("rm ../data/secret/*.in")
print("rm ../data/secret/*.ans")

for i in range(2, 7):
    for j in range(1, i + 1):
        rand(i, j, 0.0001, 0.001)
        rand(i, j, 0.001, 0.01)
        rand(i, j, 0.01, 0.5)
        rand(i, j, 0.5, 0.99)
        rand(i, j, 0.99, 0.999)
        rand(i, j, 0.999, 1.0000)

for _ in range(50):
    full_rand()


print("for f in data/secret/*.in")
print("do")
print("    ../submissions/accepted/author.py < $f > $(basename $f .in).ans")
print("done")
