fn solve(list: &mut Vec<(i32, i32)>, mov: &[(i32, i32)], p: i32, q: i32, x: i32, y: i32, n: i32) { if n <= 3 { list.push((p, q)); for &m in mov { solve(list, &mov, p + m.0, q + m.1, x, y, n + 1) } } } fn main() { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); let mut s = s.trim().split_whitespace(); let x: i32 = s.next().unwrap().parse().unwrap(); let y: i32 = s.next().unwrap().parse().unwrap(); let m = vec![ (-2, -1), (-2, 1), (-1, -2), (-1, 2), (1, -2), (1, 2), (2, -1), (2, 1), ]; let mut list = Vec::new(); solve(&mut list, &m, 0, 0, x, y, 0); println!("{}", if list.contains(&(x, y)) { "YES" } else { "NO" }); }