#![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, } let mut ans: i64 = 0; for _ in 0..N { input! { C: i64, D: i64 } let (d, m) = divmod(C, 2); let x = ((d + m) % MOD) * (D % MOD) % MOD; ans += x; ans %= MOD; } println!("{}", ans); }