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
bW9kdWxlIE1haW4gd2hlcmUKCm1haW4gOjogSU8gKCkKbWFpbiA9IGRvCiAgXyA8LSBnZXRMaW5lCiAgYSA8LSBnZXRJbnRMaXN0CiAgbWFwTV8gcHV0U3RyTG4gJCBzb2x2ZSBhCgptIDo6IFtJbnRdCm0gPSBbMSwgMCwgMSwgMF0gKysgWzAsIDAgLi5dCgpzb2x2ZSA6OiBbSW50XSAtPiBbU3RyaW5nXQpzb2x2ZSBhID0gZm10IC4gbG9vcCBbXSAkIHJldmVyc2UgYQogIHdoZXJlCiAgbG9vcCBhbnMgW10gPSBhbnMKICBsb29wIGFucyBhJyA9IGxldCB4ID0gaGVhZCBhJwogICAgICAgICAgICAgICAgaW4gIGxvb3AgKHg6YW5zKSAkIGNhbGMgeCBhJwoKZm10IDo6IFtJbnRdIC0+IFtTdHJpbmddCmZtdCBucyA9IFtzMV0gKysgW3MyXQogIHdoZXJlCiAgczEgPSBzaG93ICQgbGVuZ3RoIG5zCiAgczIgPSB1bndvcmRzICQgbWFwIHNob3cgbnMKCmNhbGMgOjogSW50IC0+IFtJbnRdIC0+IFtJbnRdCmNhbGMgeCBucyA9IHRhaWwgJCB6aXBXaXRoICgtKSBucyAkIG1hcCAoKngpIG0KCmdldEludExpc3QgOjogSU8gW0ludF0KZ2V0SW50TGlzdCA9IG1hcCByZWFkIC4gd29yZHMgPCQ+IGdldExpbmU=