const DIVISOR: usize = 1_000_000_007; fn main() { let mut n = String::new(); std::io::stdin().read_line(&mut n).ok(); let n: usize = n.trim().parse().unwrap(); let mut dp: Vec> = vec![vec![0; 10]; n]; for rank in 0..n { dp[rank][9] = 1; for i in (0..9).rev() { if rank == 0 { dp[rank][i] = 10 - i; } else { dp[rank][i] = dp[rank-1][i] + dp[rank][i+1]; } dp[rank][i] %= DIVISOR; } } println!("{}", dp[n-1][0]); }