#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <sstream>
using namespace std;

int calc(int a, int b, char ope)
{
  switch(ope) {
  case '+':
    return a + b;
    break;
  case '-':
    return a - b;
    break;
  case '*':
    return a * b;
    break;
  }
}

string kakko(vector<char> ope, vector<int> val)
{
  ostringstream os;
  os << "(((" << val[0] << " " << ope[0] << " " << val[1] << ")" << " " << ope[1] << " " << val[2] << ")" << " " << ope[2] << " " << val[3] << ")";

  int result = val[0];
  for (int i = 1; i < 4; i++) {
    result = calc(result, val[i], ope[i - 1]);
  }
  if (result == 10) {return os.str();}
  else {
    ostringstream os1;
    os1 << "((" << val[0] << " " << ope[0] << " " << val[1] << ")" << " " << ope[1] << " " << "("<< val[2] << " " << ope[2] << " " << val[3] << "))";
    result = calc(calc(val[0], val[1], ope[0]), calc(val[2], val[3], ope[2]), ope[1]);
    if (result == 10) {return os1.str();}
    else {return "";}
  }
}

int main()
{
  int a[4];
  vector<int> v(4);
  char m[3];
  m[0] = '+', m[1] = '-', m[2] = '*';
  for (int i = 0; i < 4; i++) {
    v[i] = i;
  }

  while (scanf("%d %d %d %d ", a, a + 1, a + 2, a + 3) == 4) {
    if (a[0] == 0 && a[1] == 0 && a[2] == 0 && a[3] == 0) {
      break;
    }
    sort(v.begin(), v.end());

    while (next_permutation(v.begin(), v.end())) {
      int x[3];
      for (x[0] = 0; x[0] < 3; x[0]++) {      
	for (x[1] = 0; x[1] < 3; x[1]++) {
	  for (x[2] = 0; x[2] < 3; x[2]++) {
	    vector<char> ope;
	    vector<int> val;
	    for (int i = 0; i < 3; i++) {
	      ope.push_back(m[x[i]]);
	    }
	    for (int i = 0; i < 4; i++) {
	      val.push_back(a[v[i]]);
	    }
	    string str = kakko(ope, val);
	    if (str.size() != 0) {
	      cout << str << endl;
	      goto next;
	    }
	  }
	}
      }
    }
    cout << 0 << endl;
  next:;
  }
}