T = int(input()) X, A = map(int, input().split()) Y, B = map(int, input().split()) min_cost = float('inf') if T > 0: # Candidate 1: Only waiting min_cost = T # Candidate 2: Using only A k_max = T // A cost = X * k_max + (T - k_max * A) if cost < min_cost: min_cost = cost # Candidate 3: Using A once more than k_max and then B k = k_max + 1 m_min = max(0, (k * A - T + B - 1) // B) if k * A - m_min * B <= T: cost = X * k + Y * m_min + (T - (k * A - m_min * B)) if cost < min_cost: min_cost = cost # Candidate 4: Explore combinations of A and B k_max_candidate = (T + 2 * B) // A + 2 for k in range(0, k_max_candidate + 1): m_min = max(0, (k * A - T + B - 1) // B) if k * A - m_min * B > T: continue cost = X * k + Y * m_min + (T - (k * A - m_min * B)) if cost < min_cost: min_cost = cost else: # T is negative, use B to go back abs_T = -T m = (abs_T + B - 1) // B # ceil division cost = Y * m + (m * B - abs_T) min_cost = cost print(min_cost)