package main import ( "bufio" "fmt" "os" "strconv" "strings" ) const ( mod = int64(1e9 + 7) ) func resolve(N int, C, D []int64) int64 { ret := int64(0) for i := 0; i < N; i++ { c := C[i] / 2 if C[i]%2 == 1 { c += 1 } ret = (ret + (c%mod)*(D[i]%mod)) % mod } return ret } func main() { s := bufio.NewScanner(os.Stdin) s.Scan() N, _ := strconv.Atoi(s.Text()) C := make([]int64, N) D := make([]int64, N) for i := 0; i < N; i++ { s.Scan() S := strings.Split(s.Text(), " ") C[i], _ = strconv.ParseInt(S[0], 10, 64) D[i], _ = strconv.ParseInt(S[1], 10, 64) } fmt.Println(resolve(N, C, D)) }