open System type Sol() = member this.Solve() = let [|A; B; C|] = stdin.ReadLine().Split(' ') |> Array.map int64 let alpha = Seq.find (fun (x:int64) -> ( x*x*x + A*x*x + B*x + C = 0L ) || ( -x*x*x + A*x*x - B*x + C = 0L )) [0L..1000000L] 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()