use proconio::{fastout, input}; mod mylib { pub const fn pow_mod(a: u32, mut b: u32, r#mod: u32) -> u32 { let mut ans: u32 = 1; let mut mul: u32 = a; while b > 0 { if (b & 1) == 1 { ans = (ans as u64 * mul as u64 % r#mod as u64) as u32; } mul = (mul as u64 * mul as u64 % r#mod as u64) as u32; b /= 2; } ans } } #[fastout] fn main() { input! { p: u32, } println!("{}", output(solve(p))); } fn solve(p: u32) -> u32 { let mut ans = 1; let mut addition = 1; for i in 1..p { addition = (addition as u64 * mylib::pow_mod(i, p - 2, p) as u64 % p as u64) as u32; ans = (ans + addition) % p; } ans } fn output(ans: u32) -> u32 { ans }