module Main where
main = do
a <- getIntList
m = [1, 0, -1, 0] ++ [0, 0 ..]
solve a
= fmt
. loop
[] $ reverse a
where
loop ans [] = ans
loop ans a' = let x = head a'
in loop (x:ans) $ calc x a'
fmt :: [Int] -> [String]
fmt ns = [s1, s2]
where
s1 = show $ length ns
s2 = unwords $ map show ns
calc :: Int -> [Int] -> [Int]
calc x ns = tail $ zipWith (-) ns $ map (*x) m
getIntList :: IO [Int]
getIntList = map read . words <$> getLine
bW9kdWxlIE1haW4gd2hlcmUKCm1haW4gOjogSU8gKCkKbWFpbiA9IGRvCiAgXyA8LSBnZXRMaW5lCiAgYSA8LSBnZXRJbnRMaXN0CiAgbWFwTV8gcHV0U3RyTG4gJCBzb2x2ZSBhCgptIDo6IFtJbnRdCm0gPSBbMSwgMCwgLTEsIDBdICsrIFswLCAwIC4uXQoKc29sdmUgOjogW0ludF0gLT4gW1N0cmluZ10Kc29sdmUgYSA9IGZtdCAuIGxvb3AgW10gJCByZXZlcnNlIGEKICB3aGVyZQogIGxvb3AgYW5zIFtdID0gYW5zCiAgbG9vcCBhbnMgYScgPSBsZXQgeCA9IGhlYWQgYScKICAgICAgICAgICAgICAgIGluICBsb29wICh4OmFucykgJCBjYWxjIHggYScKCmZtdCA6OiBbSW50XSAtPiBbU3RyaW5nXQpmbXQgbnMgPSBbczEsIHMyXQogIHdoZXJlCiAgczEgPSBzaG93ICQgbGVuZ3RoIG5zCiAgczIgPSB1bndvcmRzICQgbWFwIHNob3cgbnMKCmNhbGMgOjogSW50IC0+IFtJbnRdIC0+IFtJbnRdCmNhbGMgeCBucyA9IHRhaWwgJCB6aXBXaXRoICgtKSBucyAkIG1hcCAoKngpIG0KCmdldEludExpc3QgOjogSU8gW0ludF0KZ2V0SW50TGlzdCA9IG1hcCByZWFkIC4gd29yZHMgPCQ+IGdldExpbmU=