def permutations(lis):
    N = len(lis)
    i = 0
    c = [*range(0, max(2,N+1))]
    while True:
        yield lis
        i = 1
        while c[i] == 0:
            c[i] = i
            i += 1
        if i >= N: break
        c[i] -= 1
        k = 0 if i % 2 == 0 else c[i]
        lis[k], lis[i] = lis[i], lis[k]
        
for l in range(9):
    lis = [i for i in range(l)]
    s = set()
    for x in permutations(lis):
        # all permutation must be of length l
        assert len(x) == l
        # all permutation must be unique
        radix = [True] * l
        for i in x:
            assert radix[i]
            radix[i] = False
        # all permutation must be unique
        hash = sum([x[i] * l**i for i in range(l)])
        assert hash not in s
        s.add(hash)
    # exactly l! number of permutations
    assert len(s) == factorial(l)
    print(l, len(s))