#![allow(non_snake_case)] #[allow(unused_imports)] use proconio::{input, marker::Usize1, marker::Chars}; #[allow(unused_imports)] use itertools::Itertools; #[allow(unused_macros)] macro_rules! d { ( $( $x:expr ),* $(,)? ) => { println!( concat!( $( stringify!($x), "={:?} " ),* ), $( $x ),* ); }; } fn divmod(a: i64, b: i64) -> (i64, i64) { (a.div_euclid(b), a.rem_euclid(b)) } const MOD: i64 = 1_000_000_007; fn main() { input! { N: usize, xs: [(i64, i64); N], } let ans = xs.iter() .fold(0, |acc, &(C, D)| { let (d, m) = divmod(C, 2); let x = (d + m) * D % MOD; (acc + x) % MOD }); println!("{}", ans); }