import Data.List import Control.Applicative import Control.Monad main = do _ <- getLine bs <- map read. words <$> getLine let ans = solve bs putStrLn. unwords. map show$ ans solve bs = reverse. canonicalize. rec. reverse$ bs where rec (x3:x2:x1:x0:xs) = rec (x2:(x1+x3):x0:xs) rec xs = xs canonicalize xs | all (0==) xs = [0] | otherwise = dropWhile (==0) xs