A, B, C, D, N = map(int, input().split()) P, Q, R, S, T = map(int, input().split()) # aの最小値は、a + b >= N - (C + D) かつ b <= B → a >= N - (C + D) - B a_min = max(0, N - (C + D) - B) a_max = min(A, N) # aを大きい順に試す for a in range(a_max, a_min - 1, -1): # 残り時間が不足している場合はスキップ remaining_time_after_a = T - a * P if remaining_time_after_a < 0: continue # bの範囲を計算 # rem = c + d <= C + D → rem >= N -a - B b_low = max(0, N - a - (C + D)) b_high = min(B, N - a) if b_low > b_high: continue # 時間制約からbの上限を再計算 if Q > 0: max_b_by_time = remaining_time_after_a // Q b_high = min(b_high, max_b_by_time) else: # Qが0の場合はbが何でも良いが、問題文でQ>0と仮定 pass if b_low > b_high: continue # bを大きい順に試す for b in range(b_high, b_low - 1, -1): rem = N - a - b if rem < 0 or rem > C + D: continue time_rem = remaining_time_after_a - b * Q if time_rem < 0: continue # RとSが異なる場合 if R != S: denominator = R - S numerator = time_rem - S * rem if denominator == 0: continue # このケースはR=Sでないので発生しない if numerator % denominator != 0: continue c = numerator // denominator d = rem - c if 0 <= c <= C and 0 <= d <= D: print(a, b, c, d) exit() else: # R == Sの場合、time_rem == R * rem かつ c + d = rem if time_rem != R * rem: continue # cの範囲をチェック c_min = max(0, rem - D) c_max = min(C, rem) if c_min > c_max: continue # 最大値から試す c = c_max d = rem - c if d >= 0 and d <= D: print(a, b, c, d) exit() else: # 最小値を試す c = c_min d = rem - c if c >= 0 and c <= C and d >= 0 and d <= D: print(a, b, c, d) exit()