use proconio::input; fn main() { input! { n: usize, m: usize } let mut seen = vec![false; n]; for i in 1..=n { let x = pow(i, m, n); if seen[x] { println!("No"); return; } seen[x] = true; } println!("Yes"); } fn pow(x: usize, mut k: usize, m: usize) -> usize { let mut res = 1; let mut pow = x; while k > 0 { if k & 1 == 1 { res *= pow; res %= m; } pow *= pow; pow %= m; k >>= 1; } res }