#include <iostream>
#include <cmath>
using namespace std;
void solution(double a, double b, double c, double d) {
double discriminant, p, q, phi, x1, x2, x3;
discriminant = 18*a*b*c*d - 4*pow(b, 3)*d + pow(b, 2)*pow(c, 2) - 4*a*pow(c, 3) - 27*pow(a, 2)*pow(d, 2);
p = (3*a*c - pow(b, 2))/(3*pow(a, 2));
q = (2*pow(b, 3) - 9*a*b*c + 27*pow(a, 2)*d)/(27*pow(a, 3));
if (discriminant > 0 || (discriminant == 0 && p != q)) {
phi = atan2(sqrt(discriminant), q);
x1 = -2*sqrt(p/3)*cos(phi/3) - b/(3*a);
x2 = -2*sqrt(p/3)*cos((phi + 2*M_PI)/3) - b/(3*a);
x3 = -2*sqrt(p/3)*cos((phi - 2*M_PI)/3) - b/(3*a);
cout<<x1<<" "<<x2<<" "<<x3;
}
else if (discriminant == 0 && p == q) {
x1 = pow(d/a, 1/3) * -1;
x2 = pow(d/a, 1/3) * -1;
x3 = pow(d/a, 1/3) * -1;
cout<<x1<<" "<<x2<<" "<<x3;
}
else {
double r = sqrt(pow(q, 2) - pow(p, 3));
double s = pow((q + r), 1/3);
double t = pow((q - r), 1/3);
x1 = (s + t) - (b/(3*a));
x2 = -(s + t)/2 - (b/(3*a)) + (sqrt(3)*(s - t))/2;
x3 = -(s + t)/2 - (b/(3*a)) - (sqrt(3)*(s - t))/2;
cout<<x1<<" "<<x2<<" "<<x3;
}
}
int main() {
double a, b, c, d;
cin>>a>>b>>c>>d;
solution(a,b,c,d);
return 0;
}