import Control.Arrow main :: IO () main = do input <- map (head . words &&& read . flip (:) [] . last) <$> lines <$> readFile "input" print $ (\(x,y,z,d2) -> (x*y,x*d2)) $ day2 input (0,0,0,0) day2 :: [(String,Int)] -> (Int,Int,Int,Int) -> (Int,Int,Int,Int) day2 ((d,l):xs) (x,y,z,d2) | d=="forward" = day2 xs (x+l,y,z,d2+l*z) | d=="up" = day2 xs (x,y-l,z-l,d2) | d=="down" = day2 xs (x,y+l,z+l,d2) day2 [] x = x