#include "bits/stdc++.h" #include using namespace std; typedef unsigned long long _ulong; typedef long long int lint; typedef pair plint; typedef pair pld; #define ALL(x) (x).begin(), (x).end() #define SZ(x) ((lint)(x).size()) #define FOR(i, begin, end) for(lint i=(begin),i##_end_=(end);i=i##_begin_;i--) #define REP(i, n) FOR(i,0,n) #define IREP(i, n) IFOR(i,0,n) #define endk '\n' templatebool chmax(T& a, const T& b) { if (a < b) { a = b; return 1; } return 0; } templatebool chmin(T& a, const T& b) { if (b < a) { a = b; return 1; } return 0; } const lint MOD = 1e9 + 7, INF = 1e18; lint dx[8] = { 0, -1, 1, 0, 1, -1, 1, -1 }, dy[8] = { 1, 0, 0, -1, -1, -1, 1, 1 }; double A, B, C; int main() { cin >> A >> B >> C; if (B * B < 4 * A * C) cout << "imaginary" << endk; else if(B *B != 4 * A * C){ long double lb = -1000, ub = -B / 2 * A, ans1, ans2; REP(i, 1000) { long double mid = (lb + ub) / 2; if (A * mid * mid + B * mid + C <= 0) lb = mid; else ub = mid; } ans1 = ub; if (lb == -1000) { lb = -1000, ub = -B / 2 * A; REP(i, 1000) { long double mid = (lb + ub) / 2; if (A * mid * mid + B * mid + C >= 0) lb = mid; else ub = mid; } ans1 = ub; } lb = -B / 2 * A, ub = 1000; REP(i, 1000) { long double mid = (lb + ub) / 2; if (A * mid * mid + B * mid + C <= 0) lb = mid; else ub = mid; } ans2 = ub; if (lb == 1000) { lb = -B / 2 * A, ub = 1000; REP(i, 1000) { long double mid = (lb + ub) / 2; if (A * mid * mid + B * mid + C >= 0) lb = mid; else ub = mid; } ans2 = ub; } cout << setprecision(30) << ans1 << " " << ans2 << endk; } else { cout << setprecision(30) << -B / 2 * A << endk; } }