#include <bits/stdc++.h>
using namespace std;
struct xishu{
int a;
int b;
int c;
};
xishu getxishu(string str){
int positive = 1; //第一个数字默认为正
int tempxishu = 1; //没有系数的x或x^2系数默认为1
bool firstnum = false; //当遇到数字时进入统计数字模式
//当这个模式下遇到了非数字则要结算当前系数
xishu res;
res.a = 0;
res.b = 0;
res.c = 0;
for(int i = 0; i < str.size(); i++){
if(str[i] >= '0' && str[i] <= '9'){
if(!firstnum){ //遇到1个数字时,说明不能默认系数为1了,并且进入计数
firstnum = true;
tempxishu = str[i] - '0';
}
else{
tempxishu = tempxishu*10 + (str[i] - '0');
}
}
else if(str[i] == 'x'){ //遇到x时说明系数要结算了,所有初值要重置
if(str[i+1] == '^' && str[i+2] == '2'){ //直接往后遍历是否为^2,计入系数a
res.a += positive * tempxishu;
tempxishu = 1;
firstnum = false;
i += 2;
}
else{ //否则计入系数b
res.b += positive * tempxishu;
tempxishu = 1;
firstnum = false;
}
}
else if(str[i] == '+' || str[i] == '-'){ //除了第一个默认的正系数,接下来遇到
if(firstnum){ //+-都需要改变正负并且遇到+-也要结算
res.c += positive * tempxishu;
firstnum = false;
tempxishu = 1;
}
if(str[i] == '+') positive = 1;
else positive = -1;
}
}
//当最后一个字符为数字时,系数并未结算,此时bool值为真
if(firstnum){
res.c += positive * tempxishu;
}
return res;
}
int main() {
string str;
while(cin>>str){
int mid = str.find('=');
string pre = str.substr(0,mid);
string last = str.substr(mid+1);
xishu prexishu = getxishu(pre); //等号前的系数获取
xishu lastxishu = getxishu(last); //等号后的系数获取
int a, b, c;
a = prexishu.a - lastxishu.a; //等号后面的系数移到另一边需要变号
b = prexishu.b - lastxishu.b;
c = prexishu.c - lastxishu.c;
int deta = b*b - 4*a*c;
if(deta < 0){
cout<<"No Solution"<<endl;
}
else{
double ans1, ans2;
ans1 = (-1*b-sqrt(deta)) / (2*a);
ans2 = (-1*b+sqrt(deta)) / (2*a);
printf("%.2lf %.2lf\n", ans1, ans2);
}
}
}