import Data.List (foldl') import Data.Bool (bool) main :: IO () main = do n <- readLn :: IO Integer print $ bool 0 (facMod 1000000007 n) (n < 1000000007) facMod :: Integer -> Integer -> Integer facMod n x = foldl' (prodMod n) 1 [1..x] prodMod :: Integer -> Integer -> Integer -> Integer prodMod n x y = ((x `mod` n) * (y `mod` n)) `mod` n