q = 10^9+7 apply n f x = foldr ($) x (replicate n f) main = readLn >>= print . step step :: Int -> Int step 1 = 1 step 2 = 1 step 3 = 3 step n = flip mod q $ sum $ head $ apply (n-3) dp [[1,1,1],[0,1,0],[1,0,0]] dp xs@[[x1,x2,x3],[y1,y2,y3],[z1,z2,z3]] = [mod (x2+x3) q, mod (y1+y3) q, mod (z1+z2) q] : take 2 xs