def main(): r, p, q = map(int, input().split()) a, b, c, d = map(int, input().split()) a, b, c = sorted([a, b, c]) # ルーマニア人最大化が目的なのでまず変えれるだけ変える k = min(a, r // p) ans = k a -= k b -= k c -= k r -= k * p ok = r // p > 0 while ok: pa = ans if c == 0: # 全部緑コーダーから賄うしかない k = min(d // 3, r // (3 * q + p)) ans += k d -= 3 * k r -= (3 * q + p) * k ok = False elif b == 0: # 青コーダーと緑コーダーで赤と黄を錬成しないといけない # まず緑コーダーを使い切って損がない k = min(c, d // 2, r // (2 * q + p)) ans += k d -= 2 * k c -= k r -= (2 * q + p) * k # 青コーダーで全部賄う k = min(c // 3, r // (2 * q + p)) ans += k c -= 3 * k r -= (2 * q + p) * k # 青コーダーの余りと緑コーダーのあまり if d >= 1 and c >= 2: k = r // (2 * q + p) d -= k c -= 2 * k ans += k r -= (2 * q + p) * k else: # 青と黄と緑で赤を錬成 # まず緑コーダーを使い切って損がない k = min(b, c, d, r // (q + p)) ans += k b -= k c -= k d -= k r -= (q + p) * k # 青コーダーで赤を賄う k = min(b, c // 2, r // (q + p)) ans += k b -= k c -= 2 * k r -= (q + p) * k if pa == ans: ok = False print(ans) if __name__ == "__main__": main()