#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int da[60001],dc[60001];
int modul (int x){
if (x<0)
return -x;
return x;
}
int main()
{
FILE *fin=fopen ("ecuatie.in","r");
FILE *fout=fopen ("ecuatie.out","w");
int a,b,c,k,diva,divc,d,p1,p2,q1,q2,i,j,sol=0,x;
fscanf (fin,"%d%d%d%d",&a,&b,&c,&k);
diva=divc=0;
x=modul(a);
for (d=1;d*d<=x;d++){
if (a%d==0){
da[++diva]=d;
if (d!=a/d)
da[++diva]=a/d;
}
}
for (i=1;i<=diva;i++)
da[diva+i]=-da[i];
x=modul(c);
for (d=1;d*d<=x;d++){
if (c%d==0){
dc[++divc]=d;
if (d!=c/d)
dc[++divc]=c/d;
}
}
for (i=1;i<=divc;i++)
dc[divc+i]=-dc[i];
diva*=2;
divc*=2;
sort (da+1,da+diva+1);
sort (dc+1,dc+divc+1);
for (i=1;i<=diva;i++){
p1=da[i];
p2=a/p1;
//if (p1==-4 && p2==-1)
// printf ("a");
// p1 e cel mai mic asa ca le voi afla chiar in ordine fara sa am nevoie de vector
for (j=1;j<=divc;j++){
q1=dc[j];
q2=c/q1;
if (p2*q1+q2*p1==b){
sol++;
//printf ("%d %d %d %d\n",p1,p2,q1,q2);
if (sol==k){
fprintf (fout,"(");
if (p1==-1)
fprintf (fout,"-x");
else if (p1==1)
fprintf (fout,"x");
else fprintf (fout,"%dx",p1);
if (q1<0)
fprintf (fout,"%d",q1);
else fprintf (fout,"+%d",q1);
fprintf (fout,")");
fprintf (fout,"(");
if (p2==-1)
fprintf (fout,"-x");
else if (p2==1)
fprintf (fout,"x");
else fprintf (fout,"%dx",p2);
if (q2<0)
fprintf (fout,"%d",q2);
else fprintf (fout,"+%d",q2);
fprintf (fout,")");
return 0;
}
}
}
}
fprintf (fout,"-1");
return 0;
}