fn gcd(a: isize, b: isize) -> isize { if b == 0 { return a; } gcd(b, a%b) } fn main() { let mut nh = String::new(); std::io::stdin().read_line(&mut nh).ok(); let nh: Vec = nh.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nh[0]; let h = nh[1] as isize; 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(); if a.iter().filter(|&&v| v == 0).count() > 0 { println!("YES"); return; } let result = a.iter().map(|&v| gcd(h, v.abs())).fold(1isize, |x, y| gcd(h, x*y)); if result == h { println!("YES"); } else { println!("NO"); } }