#include<bits/stdc++.h>
using namespace std;
bool issq(int d){//是平方数
int r=sqrt(d);
if(r*r==d) return 1;
return 0;
}
int gcd(int a,int b){
if(!b) return a;
return gcd(b,a%b);
}
void solve1(int b,int ax2){//处理 -b/2a
int gcdd=gcd(b,ax2);
if((-b/gcdd)<0 && (ax2/gcdd)<0) b*=-1,ax2*=-1;
if((-b/gcdd)%(ax2/gcdd)==0) cout<<(-b/gcdd)/(ax2/gcdd)<<'+';
else cout<<-b/gcdd<<'/'<<ax2/gcdd<<'+';
return;
}
void solve2(int d,int ax2){//c化简根并处理
int k=1;
for(int i=1;i*i<=d;i++) if(d%(i*i)==0) d/=i*i,k*=i;
int gcdd=gcd(k,ax2);
if((k/gcdd)<0 && (ax2/gcdd)<0) k*=-1,ax2*=-1;
if(k/gcdd!=1) cout<<k/gcdd<<'*';
cout<<"sqrt("<<d<<")";
if(ax2/gcdd!=1) cout<<'/'<<ax2/gcdd;
cout<<endl;
}
void func(int a,int b,int c){
int d=b*b-4*a*c;
if(d<0){//无实数根
cout<<"NO"<<endl;
return;
}
if(issq(d)){//有理数
int sq=sqrt(d);
int z=-b-sq,z1=-b+sq,m=2*a;
double ans1=z/m,ans2=z1/m;
if(ans1<ans2) z=z1;
int gc=gcd(z,m);
z/=gc,m/=gc;
if(m<0) z=-z,m=-m;
cout<<z;
if(m!=1) cout<<'/'<<m;
cout<<endl;
}else{//吴礼庶
if(b) solve1(b,2*a);//处理 -b/2a
solve2(d,2*a);
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t,M;
cin>>t>>M;
int a,b,c;
while(t--){
cin>>a>>b>>c;
func(a,b,c);
}
return 0;
}
/*
a*x^2+b*x+c=0
*/
样例2、4、6、9、10 WA