fn read() -> Vec { let mut s = String::new(); std::io::stdin().read_line(&mut s).unwrap(); s.trim().bytes().map(|c| (c - b'0') as u64).collect::>() } fn main() { let s = read(); const MOD: u64 = 1_000_000_007; let mut sup = 1; let mut dp = 0; for (i, &c) in s.iter().enumerate() { dp = 45 * dp % MOD; for i in 1..c { dp = (dp + i * sup) % MOD; } if i > 0 { dp = (dp + 45) % MOD; } sup = sup * c % MOD; } let ans = (dp + sup) % MOD; println!("{}", ans); }