open System type Sol() = member this.Solve() = let [|A; B; C|] = stdin.ReadLine().Split(' ') |> Array.map int64 let f x = x*x*x + A*x*x + B*x + C let g t = if (f t) = 0L then Some t elif (f -t) = 0L then Some -t else None let alpha = Seq.map g [0L..1000000L] |> Seq.find Option.isSome |> Option.get let A2 = A + alpha let B2 = B + alpha*A2 let D = A2*A2 - 4L*B2 let sqrtD:int64 = (double D) |> sqrt |> int64 [alpha; (-A2 + sqrtD)/2L; (-A2 - sqrtD)/2L ] |> Seq.sort |> Seq.map string |> Seq.reduce (fun s t -> s + " " + t) |> printfn "%s" let mySol = new Sol() mySol.Solve()