def prod(P, Q):
    n = max(len(P), len(Q))
    if n == 1:
        return [P[0]*Q[0]]
    P, Q = standardise(P, Q)
    k = n // 2
    P0, P1 = P[0:k], P[k:n]
    Q0, Q1 = Q[0:k], Q[k:n]
    R0 = prod(P0, Q0)
    R1 = prod(P1, Q1)
    R2 = prod(add(P0, P1), add(Q0, Q1))
    R2 = sous(sous(R2, R1), R0)
    R1 = prodmonome(R1, 2 * k)
    R2 = prodmonome(R2, k)
    return add(add(R0, R1), R2)
