#二分
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<iomanip>
using namespace std;
double a, b, c, d;
double f(double x)
{
return x * x * x * a + x * x * b + x * c + d;
}
bool fuhao(double x)
{
return x > 0;
}
int main()
{
cin >> a >> b >> c >> d;
double q = -100., p = 100.;
vector<double>uy;vector<double>ux;
vector<double>ud;
vector<double>ans1;
vector<double>ans2;
for (double i = q; i <= p; i+=0.5)
{
ux.push_back(i);
uy.push_back(f(i));
}
bool fu = fuhao(uy[0]);
for (int i = 1; i < uy.size(); i++)
{
if (fu != fuhao(uy[i]))
{
ans1.push_back(ux[i]);
fu = fuhao(uy[i]);
}
}
fu = fuhao(uy[uy.size()-1]);
for (int i = uy.size() - 1;i >=0; i--)
{
if (fu != fuhao(uy[i]))
{
ans2.push_back(ux[i]);
fu = fuhao(uy[i]);
}
}
reverse(ans2.begin(), ans2.end());
//cout << ans1.size() << endl;
//cout << ans2.size() << endl;
for (int i = 0; i < 3; i++)
{
while (abs(ans2[i]-ans1[i])>1e-5)
{
double mid = (ans1[i] + ans2[i])/2.;
if (f(ans1[i]) * f(mid) > 0)
{
ans1[i] = mid;
}
else
{
ans2[i] = mid;
}
}
}
for (int i = 0; i < ans1.size(); i++)
{
cout <<fixed<<setprecision(2)<<ans1[i];
cout<< " ";
}
}