Thank you for reply hendrik. This same code accepted in 0.62 but the best Haskell solution time is 0.46 so i guess there is some room for improvement but i don't think it could be the reason for time limit exceed. I think time limit is tight for functional languages .
import Data.List
import qualified Data.ByteString.Lazy.Char8 as BS
matmul :: [Integer] -> [Integer] -> Integer -> [Integer]
matmul [a,b,c,d] [e,f,g,h] m = [u,v,w,x] where
u = mod ( a*e + b*g ) m
v = mod ( a*f + b*h ) m
w = mod ( c*e + d*g ) m
x = mod ( c*f + d*h ) m
powM ::[Integer] -> Integer -> Integer -> [Integer]
powM a n m | n == 1 = a
| n == 2 = matmul a a m
| even n = powM ( matmul a a m ) ( div n 2 ) m
| otherwise = matmul a ( powM ( matmul a a m ) ( div n 2 ) m ) m
readInt :: BS.ByteString -> Integer
readInt x = case BS.readInteger x of
Just ( i , _ ) -> i
Nothing -> error " upseperable ints "
solve::Integer -> BS.ByteString
solve n = BS.pack.show $ c where
[c,_,_,_] = powM [1,1,1,0] n 1000000007
--([_,a,_]:_) = powM [[1,2,1],[0,5,3],[0,3,2]] n 1000000007
-- f_3+f_7+f_11+f_15 = f_2n*f_(2n+1)
main = BS.interact $ BS.unlines. map ( solve.readInt ) . tail . BS.lines