T = int(input())
X, A = map(int, input().split())
Y, B = map(int, input().split())

if T > 0:
    candidates = [T]
    k_max = T // A
    if k_max >= 0:
        cost2 = k_max * X + (T - k_max * A)
        candidates.append(cost2)
    k_plus = k_max + 1
    diff = k_plus * A - T
    if diff > 0:
        m = (diff + B - 1) // B  # Ceiling division
        residual = T - (k_plus * A - m * B)
        if residual >= 0:
            cost3 = k_plus * X + m * Y + residual
            candidates.append(cost3)
    print(min(candidates))
else:
    T_abs = -T
    candidates = []
    m0 = (T_abs + B - 1) // B  # Ceiling division for m
    cost1 = m0 * Y + (m0 * B - T_abs)
    candidates.append(cost1)
    remainder = m0 * B - T_abs
    if remainder >= 0:
        if remainder % A == 0:
            k = remainder // A
            if k >= 0:
                cost2 = m0 * Y + k * X
                candidates.append(cost2)
    print(min(candidates))