import Control.Monad import qualified Data.ByteString.Char8 as B import Data.Maybe (fromJust) readInts :: B.ByteString -> [Int] readInts = map (fst . fromJust . B.readInt) . B.words getInts :: IO [Int] getInts = liftM readInts B.getLine main = do n <- readLn cds <- replicateM n getInts let m = 1000000000 + 7 s = foldr (\[c, d] s -> ((c+1) `div` 2 * d `mod` m + s) `mod` m) 0 cds in print s