use std::io; const BIG: u64 = 1000_000_007; fn main() { let mut s = String::new(); io::stdin().read_line(&mut s).unwrap(); let n: u64 = s.trim().parse().unwrap(); if n == 1 { println!("1"); return; } let mut last_a; let mut rui_1 = 1u64; let mut rui_2 = 0u64; let mut i = 2; loop { // 偶数 let a = rui_1 * i % BIG; last_a = a; if i == n { break; } rui_2 += a; if rui_2 >= BIG { rui_2 -= BIG; } i += 1; let a = rui_2 * i % BIG; last_a = a; if i == n { break; } rui_1 += a; if rui_1 >= BIG { rui_1 -= BIG; } i += 1; } println!("{}", last_a); }