fn main(){ let ag: Vec = read_vec(); let g = ag[6]; let vm: Vec = vec![500,100,50,10,5,1]; let mut dp: Vec = vec![false;g+1]; dp[0] = true; for i in 0 .. 6 { let mut ndp: Vec = vec![false;g+1]; for x in 0 .. g+1 { if dp[x] { let mut j: usize = 0; loop { let y = x + j * vm[i]; if y <= g && j <= ag[i]{ ndp[y] = true; j += 1; } else { break; } } } } dp = ndp; } println!("{}", if dp[g] {"YES"} else {"NO"}); } fn read_vec() -> Vec where T: std::str::FromStr, T::Err: std::fmt::Debug { let mut buf = String::new(); std::io::stdin().read_line(&mut buf).expect("failed to read"); buf.split_whitespace().map(|e| e.parse().unwrap()).collect() }