main = do d <- readLn bs <- map read . words <$> getLine let r = poly d (reverse bs) let n = length r - 1 print n putStrLn $ unwords (map show r) poly d bs | all (== 0) bs = [0] | d == 3 && bs!!0 == bs!!2 && bs!!1 == 0 = [0] | d < 3 = reverse (dropWhile (== 0) bs) | head bs == 0 = poly (d - 1) (tail bs) | otherwise = let (b1:b2:b3:br) = bs in poly (d - 1) (b2:(b3+b1):br)