import Data.Array import Data.Array.IO import Control.Monad import Control.Applicative import Data.List import Data.Char main :: IO () main = do n <- readLn a <- combDP 31 n b <- combDP 30 (n - 1) let c = 2147483647 * b putStrLn $ show a ++ " " ++ show c combDP :: Int -> Int -> IO Integer combDP n r = do a <- newArray ( (0, 0), (n, n) ) 1 :: IO (IOArray (Int, Int) Integer) mapM_ (\x -> mapM_ (\y -> do b <- readArray a (x - 1, y) c <- readArray a (x - 1, y - 1) writeArray a (x, y) (b + c)) [1 .. x - 1]) [2..n] readArray a (n, r)