#include<bits/stdc++.h>
using namespace std;
int t,m,a,b,c,q,p;
int delta;
int gcd(int a,int b){
return b==0? a:gcd(b,a%b);
}
void ylg(){
delta=sqrt(delta);
q=delta-b;
int tem=gcd(abs(a*2),abs(q));
a*=2;
if(delta==0){
if(abs(q)%a==0){
cout<<q/a<<'\n';
}
else{
q/=tem;
a/=tem;
cout<<q<<"/"<<a<<'\n';
}
}
else{
if(abs(q)%a==0){
cout<<q/a<<'\n';
}
else{
q/=tem;
a/=tem;
cout<<q<<"/"<<a<<'\n';
}
}
}
void wlg(){
bool f=0;
int s=sqrt(delta)+1,tot=1;
for(int j=1;j<=100;j++){
for(int i=1;i<=s;i++){
if(delta%(i*i)==0)tot*=i,delta/=(i*i);
}
}
if(b==0){
int tem=gcd(tot,abs(a*2));
if(a*2==tot){
cout<<tot/tem<<"*sqrt("<<delta<<")\n";
}
else{
cout<<tot/tem<<"*sqrt("<<delta<<")/"<<a*2/tem<<"\n";
}
}
else{
int tem=gcd(abs(b),gcd(tot,abs(a*2)));
if(tem==a*2){
if(tem==tot){
if(abs(b)==tem)cout<<-b/tem;
else if(abs(b)==abs(a*2))cout<<1;
else cout<<-b/tem;
if(tem==a*2){
cout<<"+sqrt("<<delta<<")\n";
}
else
cout<<"+sqrt("<<delta<<")\n";
}
else{
if(abs(b)==tem)cout<<-b/tem;
else if(abs(b)==abs(a*2))cout<<1;
else cout<<-b/tem;
if(tem==a*2){
cout<<"+sqrt("<<delta<<")\n";
}
else
cout<<"+"<<tot/tem<<"*sqrt("<<delta<<")\n";
}
}
else{
if(tem==tot){
if(abs(b)==tem)cout<<-b/tem;
else if(abs(b)==abs(a*2))cout<<1;
else cout<<-b/tem<<"/"<<a*2/tem;
if(tem==a*2){
cout<<"+sqrt("<<delta<<")\n";
}
else
cout<<"+sqrt("<<delta<<")/"<<(a*2)/tem<<"\n";
}
else{
if(tot%(a*2/tem)==0){
if((-b/tem)%(a*2/tem)==0){
cout<<(-b/tem)/(a*2/tem)<<"+"<<tot/tem/(a*2/tem)<<"*sqrt("<<delta<<")"<<"\n";
}
else{
cout<<-b/tem<<"/"<<a*2/tem<<"+"<<tot/tem/(a*2/tem)<<"*sqrt("<<delta<<")"<<"\n";
}
}
else{
cout<<-b/tem<<"/"<<a*2/tem<<"+"<<tot/tem<<"*sqrt("<<delta<<")/"<<a*2/tem<<"\n";
}
}
}
}
}
int main(){
// freopen("C:\\Users\\lenovo\\Downloads\\uqe\\uqe2.in","r",stdin);
// freopen("C:\\Users\\lenovo\\Downloads\\uqe\\uqe2.out","w",stdout);
cin>>t>>m;
while(t--){
cin>>a>>b>>c;
if(a<0){
a=-a;
b=-b;
c=-c;
}
delta=b*b-4*a*c;
int _=sqrt(delta);
if(delta<0){
cout<<"NO\n";
continue;
}
else if(_*_==delta){
ylg();
}
else{
wlg();
}
}
return 0;
}
wlg是无理根的情况
ylg是有理根的情况