#include #include //cin/cout #include //cout string #include //rambda #include #include //next/prev #include #include //iota #include #include #include #include #include #include #include using namespace atcoder; using namespace std; using llong = long long; const llong INF = 1LL << 60;//INF > 10^18(1e18) const int INF32 = 1LL << 30;//INF32 > 10^9(1e9) template bool chmax(T& max, const T& b) { if (max >= b) return false; max = b; return true; } template bool chmin(T& min, const T& b) { if (min <= b) return false; min = b; return true; } ///////////////////ここまでtoolbox///////////////////////////////////// int main() { llong R, P, Q; cin >> R >> P >> Q; llong A, B, C, D; cin >> A >> B >> C >> D; //操作2なしで何人のルーマニア人を作れるかをステップ分けする if (A < B)swap(A, B); if (B < C)swap(B, C); if (A < B)swap(A, B); llong cost1; cost1 = min(A, min(B, C));//Pで作れるルーマニア人 A -= cost1; B -= cost1; C -= cost1; llong cost2;//P+Qで作れるルーマニア人 if (B <= D) { C += B; D -= B; cost2 = C; } else { C += D; D = 0; llong r = B - C; if (A - B >= r) { C += r; A -= r; } else { r = A - C + B - C; r /= 3; C += r; A = C; B = C; } cost2 = C; } A -= C; B = 0; C = 0; llong cost3;//P+Q+Qで作れるルーマニア人 if (A*2 <= D) { cost3 = A; } else { cost3 = ((A + D) / 3); } llong ans = 0; if (cost1 * P >= R) { ans = R / P; R = 0; } else { ans += cost1; R -= cost1 * P; } if (cost2 * (P + Q) >= R) { ans += R / (P + Q); R = 0; } else { ans += cost2; R -= cost2 * (P + Q); } if (cost3 * (P + Q + Q) >= R) { ans += R / (P + Q + Q); } else { ans += cost3; } cout << ans << endl; return 0; }