#include<cstdio>
double a,b,c,d,xx,xy;
bool f(double x1,double x2){ //若答案在开区间(x1,x2)中,返回true;
double x=(a*x1*x1*x1+b*x1*x1+c*x1+d)*(a*x2*x2*x2+b*x2*x2+c*x2+d);
if(x<0) return 1;
return 0;
}
double work(double x1,double x2){
double x=(x1+x2)/2.0;
if(x2-x1<0.0001||a*x*x*x+b*x*x+c*x+d==0) printf("%0.2llf ",x1);//精确到小数点后第三位;
else{
if(f(x1,(x1+x2)/2.0)) work(x1,(x1+x2)/2.0); //二分;
else work((x1+x2)/2.0,x2);
}
}
int main()
{
scanf("%llf%llf%llf%llf",&a,&b,&c,&d);
for(int i=-99;i<=100;i++){
xx=i-1;xy=i;
if(f(xx,xy)) work(xx,xy); //若答案在开区间(x1,x2)中,进行二分查找;
xx=i;
if(a*xx*xx*xx+b*xx*xx+c*xx+d==0) printf("%0.2llf ",xx);//正好是整数时(没进行二分),直接输出
}
return 0;
}