def main(): import sys import math T = int(sys.stdin.readline()) X, A = map(int, sys.stdin.readline().split()) Y, B = map(int, sys.stdin.readline().split()) min_cost = float('inf') # Case 0: Only waiting if T > 0: min_cost = min(min_cost, T) # Consider a=0 if A > 0: a = 0 numerator = a * A - T if numerator <= 0: b_min = 0 else: b_min = max(0, (numerator + B - 1) // B) s = a * A - b_min * B if s <= T: cost = a * X + b_min * Y + (T - s) if cost < min_cost: min_cost = cost # Iterate a from 0 to 200,000 max_a = 200000 for a in range(max_a + 1): numerator = a * A - T if numerator <= 0: b = 0 else: b = (numerator + B - 1) // B # ceil division b = max(b, 0) s = a * A - b * B if s <= T: cost = a * X + b * Y + (T - s) if cost < min_cost: min_cost = cost # Iterate b from 0 to 200,000 max_b = 200000 for b in range(max_b + 1): if B == 0: continue # shouldn't happen per input constraints s_part = -b * B target = T - s_part # required a*A = target if A == 0: a = 0 if target <= 0 else -1 else: a = (target) // A if a * A != target: a = (target) // A # floor for delta in [a-1, a, a+1, a+2, a+3]: if delta < 0: continue aa = delta s = aa * A - b * B if s <= T: cost = aa * X + b * Y + (T - s) if cost < min_cost: min_cost = cost # Handle a=0 for T < 0 if T < 0: required_b = (-T + B - 1) // B # ceil(-T / B) required_b = max(required_b, 0) cost = required_b * Y + (T + required_b * B) if cost < min_cost: min_cost = cost print(min_cost) if __name__ == '__main__': main()