import qualified Data.ByteString.Lazy.Char8 as B import Data.Maybe (fromJust) maxExaminees :: [[Int]] -> Int maxExaminees = mymod . mysum . map (\(c : d : _) -> mymod $ (*) (mymod d) $ mymod $ (c + 1) `div` 2) mymod :: Int -> Int mymod = (`mod` 1000000007) mysum :: [Int] -> Int mysum [] = 0 mysum (x : xs) = mymod x + mysum xs main :: IO () main = getLine >> B.getContents >>= print . maxExaminees . map (map (fst . fromJust . B.readInt)) . map B.words . B.lines