#include <stdint.h>

uint64_t mul_1(uint64_t *v, const uint64_t *src, uint64_t y, uint64_t n)
{
    uint64_t w1, prev_w1, w0;
    uint8_t c = 0;

    umul_ppmm(prev_w1, w0, src[0], y);
    v[0] = w0;

    for (i = 1; i < n; i++) {
        umul_ppmm(w1, w0, src[i], y);
        v[i] = prev_w1 + w0;
        c = (v[i] < w0);
        prev_w1 = w1 + c;
    }

    return prev_w1 + c;
}

