import Control.Applicative import Data.List import Data.ByteString.Char8 (ByteString) import qualified Data.ByteString.Char8 as B main :: IO () main = solve <$> B.getLine >>= putStrLn solve :: ByteString -> String solve bs = f $ B.foldl' g ((0, 0, 0, 0, 0), (0, 0, 0, 0, 0)) bs where f ((_, _, _, _, x), (_, _, _, _, y)) = unwords . map show $ [x, y] g ((l0, l1, l2, l3, l4), (r0, r1, r2, r3, r4)) c | c == '(' = ((l0+1, l1, l2, l3, l4), (r0+1, r1, r2, r3, r4)) | c == '^' = ((0, l0, l1+l2, l3, l4), (r0, 0, r1, r2+r3, r4)) | c == '*' = ((l0, l1, 0, l2+l3, l4), (0, r0+r1, r2, r3, r4)) | c == ')' = ((l0, l1, l2, l3, l3+l4), (r0, r1, r2, r3, r3+r4)) | otherwise = ((l0, l1, l2, l3, l4), (r0, r1, r2, r3, r4))