-- Try yukicoder -- author: Leonardone @ NEETSDKASU import Data.List (sort) main = interact $ unlines . concat . zipWith ($) [return . show . floor . head, map show . tail] . repeat . solve . map read . words solve (0:0:0:_) = [-1] solve (0:0:_:_) = [0] solve (0:b:c:_) = [1, fromIntegral (-c) / fromIntegral b] solve (a:0:0:_) = [1, 0] solve (a:0:c:_) | e < 0 = undefined -- [0] | otherwise = undefined -- [2, - sqrt e, sqrt e] where e = fromIntegral (-c) / fromIntegral a solve (a:b:0:_) = undefined -- [2, min 0 x, max 0 x] where x = fromIntegral (-b) / fromIntegral a solve (a:b:c:_) | d < 0 = [0] | d == 0 = [1, fromIntegral (-b) / fromIntegral (2*a)] | d > 0 = [2, min y z, max y z] where d = fromIntegral b ** 2 - 4 * fromIntegral a * fromIntegral c y = (fromIntegral (-b) + sqrt d) / fromIntegral (2*a) z = (fromIntegral (-b) - sqrt d) / fromIntegral (2*a) solve _ = undefined