#![allow(unused_assignments)] use proconio::input; fn main() { input! { mut r: i64, p: i64, q: i64, mut a: [i64; 3], mut d: i64 } a.sort_unstable(); a.reverse(); let mut ans = 0; // abc let x = a[2].min(r / p); a.iter_mut().for_each(|a| *a -= x); r -= x * p; ans += x; // abd let x = a[1].min(d).min(r / (p + q)); a[..=1].iter_mut().for_each(|a| *a -= x); d -= x; r -= x * (p + q); ans += x; // aba loop { let x = (a[0] / 2).min(a[1]).min(r / (p + q)); a[0] -= 2 * x; a[1] -= x; r -= x * (p + q); ans += x; if a[0] < a[1] { a.swap(0, 1); } if x == 0 { break; } } // add let x = a[0].min(d / 2).min(r / (p + 2 * q)); a[0] -= x; d -= 2 * x; r -= x * (p + 2 * q); ans += x; // aaa let x = (a[0] / 3).min(r / (p + 2 * q)); a[0] -= 3 * x; r -= x * (p + 2 * q); ans += x; // ddd let x = (d / 3).min(r / (p + 3 * q)); d -= 3 * x; r -= x * (p + 3 * q); ans += x; println!("{ans}"); }