import System.IO fastPow :: Integer -> Integer -> Integer -> Integer fastPow base 1 m = mod base m fastPow base pow m | even pow = mod ((fastPow base (div pow 2) m) ^ 2) m | odd pow = mod ((fastPow base (div (pow-1) 2) m) ^ 2 * base) m expectedCells :: Integer -> Integer -> Integer -> Integer expectedCells a b t = fastPow (round (fromIntegral a * 0.5 + fromIntegral b * 0.5)) t (10 ^ 9 + 7) main = do l0 <- getLine let [a, b, t] = take 3 $ map read (words l0) putStrLn $ show $ expectedCells a b t