#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int a,b,c,x1,x2;
int k,v[2000],x=3,y=-1,j;
int compara(const void*a, const void*b){
return ( *(int*)a - *(int*)b );
}
int compar1(int i,int j){
if (i>j)
return j;
return i;
}
int compar2(int i,int j){
if (i<j)
return j;
return i;
}
inline int rad(int n){
return floor(sqrt(n));
}
int iesire(int n){
printf("%d\n",n);
exit(0);
}
inline int afla(int k,int x){
return (k-1)/2;
}
inline int afla2(int k,int x){
return k-1;
}
void aflu_radacini(){
int delta=b*b-4*a*c;
if (delta<0)
iesire(-1);
int r=rad(delta);
if (r*r!=delta)
iesire(-1);
x1=(r-b)/(2*a);
x2=(-r-b)/(2*a);
/*if (delta==0){
int yy1=v[afla2(k,x)];
int ii1=yy1*x1*-1;
int ii3=ii1;
int ii4=ii3;
char s1='+',s2='+';
int yy2=a/yy1;
if (ii3<0){
s1='-';
ii3*=-1;
}
if (ii4<0){
s2='-';
ii4*=-1;
}
if (yy1==1){
if (yy2==1)
printf("(x%c%d)(x%c%d)",s1,ii3,s2,ii4);
else if (yy2==-1)
printf("(x%c%d)(-x%c%d)",s1,ii3,s2,ii4);
else printf("(x%c%d)(%dx%c%d)",s1,ii3,yy2,s2,ii4);
}
else if (yy1==-1){
if (yy2==1)
printf("(-x%c%d)(x%c%d)",s1,ii3,s2,ii4);
else if (yy2==-1)
printf("(-x%c%d)(-x%c%d)",s1,ii3,s2,ii4);
else printf("(-x%c%d)(%dx%c%d)",s1,ii3,yy2,s2,ii4);
}
else{
if (yy2==1)
printf("(%dx%c%d)(x%c%d)",yy1,s1,ii3,s2,ii4);
else if (yy2==-1)
printf("(%dx%c%d)(-x%c%d)",yy1,s1,ii3,s2,ii4);
else
printf("(%dx%c%d)(%dx%c%d)",yy1,s1,ii3,yy2,s2,ii4);
}
exit(0);
}*/
}
int modul(int x){
if (x<0)
return -x;
return x;
}
void afla_divizori_a(){
for (int i=1;i<sqrt(modul(a));++i){
if (a%i==0){
v[y+1]=i*-1;
v[y+2]=i;
v[y+3]=(-a)/i;
v[y+4]=a/i;
y+=4;
}
}
int sqr=floor(sqrt(modul(a)));
if (sqr*sqr==a){
v[y+1]=-sqr;
v[y+2]=sqr;
x=y+2;
}
else{
v[y+1]=-sqr;
v[y+2]=sqr;
v[y+3]=(-a)/sqr;
v[y+4]=a/sqr;
x=y+4;
}
}
int main(){
freopen("ecuatie.in","r",stdin);
freopen("ecuatie.out","w",stdout);
scanf("%d%d%d%d",&a,&b,&c,&k);
afla_divizori_a();
if (2*x+2<k)
iesire(-1);
qsort(v,x+1,sizeof(int),compara);
aflu_radacini();
int yy1=v[afla(k,x)];
int ii1=yy1*x1*-1;
int ii2=yy1*x2*-1;
int ii3=compar2(ii1,ii2);
if (k%2==1)
ii3=compar1(ii1,ii2);
int ii4=c/ii3;
char s1='+',s2='+';int yy2=a/yy1;
if (ii3<0){
s1='-';
ii3*=-1;
}
if (ii4<0){
s2='-';
ii4*=-1;
}
if (yy1==1){
if (yy2==1)
printf("(x%c%d)(x%c%d)",s1,ii3,s2,ii4);
else if (yy2==-1)
printf("(x%c%d)(-x%c%d)",s1,ii3,s2,ii4);
else printf("(x%c%d)(%dx%c%d)",s1,ii3,yy2,s2,ii4);
}
else if (yy1==-1){
if (yy2==1)
printf("(-x%c%d)(x%c%d)",s1,ii3,s2,ii4);
else if (yy2==-1)
printf("(-x%c%d)(-x%c%d)",s1,ii3,s2,ii4);
else printf("(-x%c%d)(%dx%c%d)",s1,ii3,yy2,s2,ii4);
}
else{
if (yy2==1)
printf("(%dx%c%d)(x%c%d)",yy1,s1,ii3,s2,ii4);
else if (yy2==-1)
printf("(%dx%c%d)(-x%c%d)",yy1,s1,ii3,s2,ii4);
else
printf("(%dx%c%d)(%dx%c%d)",yy1,s1,ii3,yy2,s2,ii4);
}
//printf("%d\n",x);
return 0;
}