def ConstructListe(V):
    L = [0]*(V+1)
    return NombreTopDown(V , L)

def NombreTopDown(V , L , S = [1,7,9]):
    if V == 0:
        return 0
    elif L[V] > 0:
        return L[V]
    else:
        minimum = V + 1
        for piece in S:
            if piece <= V:
                n = 1 + NombreTopDown(V - piece , L)
                if n < minimum:
                    minimum = n
                    L[V] = minimum
        return minimum

print( ConstructListe(14) )