Rt。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
const ll N=1010;
ll T,M,cnt=0,sum=0;
ll F[N];
ll a,b,c;
void print(ll x,ll y){
ll t=__gcd(x,y);
x/=t,y/=t;
if(y<0){
y=-y;
x=-x;
}
if(y==1)
printf("%lld",x);
else
printf("%lld/%lld",x,y);
}
bool check(ll &x){
bool f=0;
for(int i=1;i<=cnt;i++){
if(F[i]>x)
break;
if(x%F[i]==0){
sum*=sqrt(F[i]);
f=1;
x/=F[i];
}
}
return f;
}
int main(){
// freopen("uqe.in","r",stdin);
// freopen("uqe.out","w",stdout);
scanf("%lld%lld",&T,&M);
for(int i=2;;i++){
if(i*i>M)
break;
F[++cnt]=i*i;
}
while(T--){
sum=1;
scanf("%lld%lld%lld",&a,&b,&c);
ll t=b*b-4.0*a*c;
if(t<0){
puts("NO");
continue;
}
if(t==0){
print(-b,2*a);
putchar('\n');
continue;
}
ll k=sqrt(t);
if(k*k==t){
if(((db)(((db)(-b+k))/(db)(2*a)))>((db)(((db)(-b-k))/((db)(2*a)))))
print(-b+k,2*a);
else
print(-b-k,2*a);
putchar('\n');
continue;
}
if(b){
print(-b,2*a);
putchar('+');
}
while(check(t));
ll x=2*a;
ll v=__gcd(x,sum);
x/=v,sum/=v;
if(x==sum){
printf("sqrt(%lld)\n",t);
continue;
}
if(sum%x==0){
ll d=abs(sum/x);
if(d==1)
printf("sqrt(%lld)\n",t);
else
printf("%lld*sqrt(%lld)\n",d,t);
continue;
}
if(sum==1){
printf("sqrt(%lld)/%lld\n",t,abs(x));
continue;
}
printf("%lld*sqrt(%lld)/%lld\n",abs(sum),t,abs(x));
}
// fclose(stdin);
// fclose(stdout);
return 0;
}