#include<fstream>
#include <cmath>
using namespace std;
const char iname[]="ecuatie.in";
const char oname[]="ecuatie.out";
const int maxn=100000;
ifstream f(iname);
ofstream g(oname);
typedef long long inti;
inti n,divz[maxn],i,j,a,b,c,k,p,ap,q1p,q2p,aux,p1,q1,p2,q2,delta,x1,x2;;
void afis(inti p1,inti q1,inti p2,inti q2)
{
g<<"(";
if(p1<0)
p1=-p1,g<<"-";
if(p1!=1)
g<<p1<<"x";
else
g<<"x";
if(q1<0)
g<<"-",q1=-q1;
else
g<<"+";
g<<q1<<")(";
if(p2<0)
p2=-p2,g<<"-";
if(p2!=1)
g<<p2<<"x";
else
g<<"x";
if(q2<0)
g<<"-",q2=-q2;
else
g<<"+";
g<<q2<<")\n";
}
int main()
{
f>>a>>b>>c>>k;
delta=b*b-4*a*c;
if (sqrt(delta)==(inti)sqrt(delta)) delta=(inti)sqrt(delta);
else
{
g<<"-1\n";
f.close();
g.close();
return 0;
}
x1=-b-delta;
x2=-b+delta;
ap=a>0?a:-a;
for(i=1;i*i<=ap;++i)
if(i*(ap/i)==ap)
if(i==ap/i)
divz[++p]=i,divz[++p]=-i;
else
divz[++p]=-i,divz[++p]=i,divz[++p]=ap/i,divz[++p]=-ap/i;
sort(divz+1,divz+p+1);
for(i=1;i<=p;++i)
{
p1=divz[i];
p2=a/divz[i];
q1=-divz[i]*x1;
q2=-(a/divz[i])*x2;
q1p=-divz[i]*x2;
q2p=-(a/divz[i])*x1;
if((a>0&&q1>q1p)||(a<0)&&(q1<q1p))
aux=q1,q1=q1p,q1p=aux,aux=q2,q2=q2p,q2p=aux;
if(q1%(ap<<1)==0&&q2%(ap<<1)==0)
{
--k;
//afis(p1,(q1/2)/a,p2,(q2/2)/a);return 0;
if(k==0)
{
afis(p1,(q1/2)/a,p2,(q2/2)/a);
f.close();
g.close();
return 0;
}
}
if(q1p%(ap<<1)==0&&q2p%(ap<<1)==0)
{
--k;
//afis(p1,(q1p/2)/a,p2,(q2p/2)/a);return 0;
if(k==0)
{
afis(p1,(q1p/2)/a,p2,(q2p/2)/a);
f.close();
g.close();
return 0;
}
}
}
g<<"-1\n";
f.close();
g.close();
return 0;
}