from collections import deque def main(): a1000, a100, a1 = map(int, input().split()) Db = int(input()) B = list(map(int, input().split())) Dc = int(input()) C = list(map(int, input().split())) Br = (B[0], B[1], B[2]) Cr = (C[0], C[1], C[2]) visited = set() q = deque() initial_state = (a1000, a100, a1) q.append((a1000, a100, a1, 0)) visited.add(initial_state) max_count = 0 while q: current = q.popleft() a1k, a100_, a1_, count = current max_count = max(max_count, count) # Try B's operation can_b = False for x in range(min(a1k, Db // 1000) + 1): remaining = Db - x * 1000 if remaining < 0: continue max_y = min(a100_, remaining // 100) for y in range(max_y, -1, -1): z = remaining - y * 100 if z >= 0 and z <= a1_: new_a1k = a1k - x + Br[0] new_a100 = a100_ - y + Br[1] new_a1 = a1_ - z + Br[2] new_state = (new_a1k, new_a100, new_a1) if new_state not in visited: visited.add(new_state) q.append((new_a1k, new_a100, new_a1, count + 1)) can_b = True break if can_b: break # Try C's operation can_c = False for x in range(min(a1k, Dc // 1000) + 1): remaining = Dc - x * 1000 if remaining < 0: continue max_y = min(a100_, remaining // 100) for y in range(max_y, -1, -1): z = remaining - y * 100 if z >= 0 and z <= a1_: new_a1k = a1k - x + Cr[0] new_a100 = a100_ - y + Cr[1] new_a1 = a1_ - z + Cr[2] new_state = (new_a1k, new_a100, new_a1) if new_state not in visited: visited.add(new_state) q.append((new_a1k, new_a100, new_a1, count + 1)) can_c = True break if can_c: break print(max_count) if __name__ == "__main__": main()