use std::collections::VecDeque; fn main() { let mut nml = String::new(); std::io::stdin().read_line(&mut nml).ok(); let nml: Vec = nml.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nml[0]; let m = nml[1]; let l = nml[2]; let mut a = String::new(); std::io::stdin().read_line(&mut a).ok(); let a: Vec = a.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let limit = m.max(l); let mut dp = vec![vec![false; limit+1]; n+1]; dp[0][l] = true; for i in 0..n { for j in 0..=limit { if !dp[i][j] { continue; } dp[i+1][j] = true; let val = (j + a[i]) / 2; if val <= limit { dp[i+1][val] = true; } } } if dp[n][m] { println!("Yes"); } else { println!("No"); } }