import Control.Monad import Control.Applicative import Data.List import qualified Data.Map as Map import qualified Data.ByteString.Char8 as BC import Data.Array import Data.Maybe strToInt s = (read :: String -> Int) s readInt :: BC.ByteString -> Int readInt = fst . fromJust . BC.readInt main = do n <- readLn :: IO Int cd <- map ((map readInt . BC.words)) <$> replicateM n BC.getLine print $ f cd f :: [[Int]] -> Int f [] = 0 f (a:an) = mod ((f an) + (g (head a)) * (last a)) 1000000007 where g x = if (even x) then div x 2 else (div x 2) + 1