#include <stdio.h>
#include <math.h>
#include <stdlib.h>
long a, b, c, k, delta, x1, x2, aux, i, v[1024], p, m[1024][9], o, y[1024][9], r;
long long a1,a2,b1,b2;
int cmp(const void *a, const void *b) {
long *c = (long *)a;
long *d = (long *)b;
if (c[1] == d[1]) {
return c[2] - d[2];
} else {
return c[1] - d[1];
}
}
void elimin() {
++r;
for (long j = 1; j <= 4; ++j) {
y[r][j] = m[1][j];
}
for (long i = 2; i <= o; ++i) {
if (m[i][1] != m[i - 1][1] || m[i][2] != m[i - 1][2] || m[i][3] != m[i - 1][3] || m[i][4] != m[i - 1][4]) {
++r;
for (long j = 1; j <= 4; ++j) {
y[r][j] = m[i][j];
}
}
}
o = r;
for (long i = 1; i <= o; ++i) {
for (long j = 1; j <= 4; ++j) {
m[i][j] = y[i][j];
}
}
}
long long cmmdc(long long a,long long b)
{
if(a<0) a = -a;
if(b<0) b = -b;
if( a == 0 || b == 0 )
return a+b;
if( a < b)
b = b%a;
else a = a%b;
return cmmdc(a,b);
}
void test(long a,long b)
{
if( a % b1 || b % b2) return;
m[++o][1] = a;
m[o][3] = b;
m[o][2] = -a/b1 *a1;
m[o][4] = -b/b2 *a2;
m[++o][3] = m[o-1][1];
m[o][1] = m[o-1][3];
m[o][2] = m[o-1][4];
m[o][4] = m[o-1][2];
}
int main() {
freopen("ecuatie.in", "r", stdin);
freopen("ecuatie.out", "w", stdout);
scanf("%ld%ld%ld%ld", &a, &b, &c, &k);
unsigned long long delta = (long long)b * b;
delta-= 4 * (unsigned long long)a * c;
if (sqrt(delta) * sqrt(delta) != delta) {
printf("-1");
return 0;
}
a1 = -b - (long long )sqrt(delta), a2 = -b+(long long) sqrt(delta);
b1 = 2*(long long )a, b2 = 2*(long long)a;
long long c1 = cmmdc(a1,b1), c2 = cmmdc(a2,b2);
a1/=c1; b1/=c1; a2/=c2; b2/=c2;
aux = sqrt(abs(a));
for (i = 1; i <= aux; ++i) {
if (a % i == 0) {
test(i,a/i);
test(-i,-(a/i));
test(a/i,i);
test(-(a/i),-i);
}
}
qsort(m + 1, o, sizeof(m[0]), cmp);
elimin();
i = k;
//for( i = 1; i <= o; ++i)
if (k <= o)
{
printf("(");
if (m[i][1] == 1) {
printf("x");
} else {
if (m[i][1] == -1) {
printf("-x");
} else {
printf("%ldx", m[i][1]);
}
}
if (m[i][2] >= 0) {
printf("+%ld)", m[i][2]);
} else {
printf("%ld)", m[i][2]);
}
printf("(");
if (m[i][3] == 1) {
printf("x");
} else {
if (m[i][3] == -1) {
printf("-x");
} else {
printf("%ldx", m[i][3]);
}
}
if (m[i][4] >= 0) {
printf("+%ld)", m[i][4]);
} else {
printf("%ld)", m[i][4]);
}
printf("\n");
}
if (k > o) {
printf("-1");
return 0;
}
return 0;
}