#include using namespace std; using ll = long long; #define all(A) A.begin(),A.end() using vll = vector; #define rep(i, n) for (long long i = 0; i < (long long)(n); i++) using Graph = vector>; ll mod = 1e9 + 7; ll inv(ll N) { ll a = N, b = mod, c = 1, d = 0; while (b > 0) { ll t = a / b; a -= t * b; swap(a, b); c -= t * d; swap(c, d); } c %= mod; if (c < 0)c += mod; return c; } int main() { ll A, B, C; cin >> A >> B >> C; vll AN(3); if (C == 0) { AN[0] = 0; } else { for (ll i = 1; i * i * i <= abs(C); i++) { if (C % i == 0) { if (i * i + A * i + B + C / i == 0) { AN[0] = i; A += i; B += A * i; break; } if (i * i - A * i + B - C / i == 0) { AN[0] = -i; A += -i; B += (A * (-i)); break; } } } } ll d = sqrt(A * A - 4 * B); ll D; for (D = d - 2; D <= d + 2; D++) { if (D * D == A * A - 4 * B) { break; } } AN[1] = (-A - D) / 2; AN[2] = (-A + D) / 2; sort(all(AN)); cout << AN[0] << " " << AN[1] << " " << AN[2] << endl; }