#include <iostream>
using namespace std;
int backup[5], t[6][5], flag = false;
void swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void dfs(int ci, int* next);
int main()
{
for(int i = 1; i <= 4; i++)
cin >> backup[i];
dfs(4, backup);
cout << "No Answer!" << endl;
return 0;
}
void dfs(int ci, int* next)
{
if(ci > 1)
for(int i = 1; i <= ci - 1; i++)
for(int j = i + 1; j <= ci; j++)
{
int a = next[i], b = next[j];
if(a < b)
swap(&a, &b);
t[5 - ci][1] = a;
t[5 - ci][2] = b;
t[5 - ci][4] = -1;
int cnt = 0, n[5] = {0, 0, 0, 0, 0};
for(int k = 1; k <= ci; k++)
if((k != i) && (k != j))
n[++cnt] = next[k];
for(int k = 1; k <= 4; k++)
{
switch(k)
{
case 1: t[5 - ci][3] = a + b;
t[5 - ci][4] = 1;
break;
case 2: t[5 - ci][3] = a - b;
t[5 - ci][4] = 2;
break;
case 3: t[5 - ci][3] = a * b;
t[5 - ci][4] = 3;
break;
case 4: if((b != 0) && (a % b == 0))
{
t[5 - ci][3] = a / b;
t[5 - ci][4] = 4;
}
break;
}
if(t[5 - ci][4] != -1)
{
n[cnt + 1] = t[5 - ci][3];
dfs(ci - 1, n);
}
}
}
else
if(next[1] == 24)
{
for(int i = 1; i <= 3; i++)
{
cout << t[i][1];
switch(t[i][4])
{
case 1: cout << "+" << t[i][2] << "=" << t[i][3] << endl;
break;
case 2: cout << "-" << t[i][2] << "=" << t[i][3] << endl;
break;
case 3: cout << "*" << t[i][2] << "=" << t[i][3] << endl;
break;
case 4: cout << "/" << t[i][2] << "=" << t[i][3] << endl;
break;
}
}
exit(0);
}
}