#include<bits/stdc++.h>
using namespace std;

typedef long long int ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<pair<int, int> > vii;
#define rrep(i, m, n) for(int (i)=(m); (i)<(n);  (i)++)
#define erep(i, m, n) for(int (i)=(m); (i)<=(n); (i)++)
#define  rep(i, n)    for(int (i)=0; (i)<(n);  (i)++)
#define rrev(i, m, n) for(int (i)=(n)-1; (i)>=(m); (i)--)
#define erev(i, m, n) for(int (i)=(n); (i)>=(m); (i)--)
#define  rev(i, n)    for(int (i)=(n)-1; (i)>=0; (i)--)
#define vrep(i, c)    for(__typeof((c).begin())i=(c).begin(); i!=(c).end(); i++)
#define  ALL(v)       (v).begin(), (v).end()
#define mp            make_pair
#define pb            push_back
template<class T, class S> inline bool minup(T& m, S x){ return m>(T)x ? (m=(T)x, true) : false; }
template<class T, class S> inline bool maxup(T& m, S x){ return m<(T)x ? (m=(T)x, true) : false; }

const int    INF = 1000000000;
const ll     MOD = 1000000007LL;
const double EPS = 1E-12;

char expr[] = {'+', '-', '*'};
vi a(4);

string to(int i)
{
  ostringstream os;
  os << a[i];
  return os.str();
}

inline int ret(int t, int i, int j)
{
  return t == 0 ? i + j : t == 1 ? i - j : i * j;
}

string solve()
{
  int tmp;
  do{
    rep(t, 5) rep(i, 3) rep(j, 3) rep(k, 3){
      if(t == 0){ // ((a+b)+c)+d
        tmp = ret(k, ret(j, ret(i, a[0], a[1]), a[2]), a[3]);
        if(tmp == 10) return "(("+to(0)+expr[i]+to(1)+")"+expr[j]+to(2)+")"+expr[k]+to(3);
      }
      else if(t == 1){ // ((a+b)+(c+d))
        tmp = ret(j, ret(i, a[0], a[1]), ret(k, a[2], a[3]));
        if(tmp == 10) return "(("+to(0)+expr[i]+to(1)+")"+expr[j]+"("+to(2)+expr[k]+to(3)+"))";
      }
      else if(t == 2){ // (a+(b+c))+d
        tmp = ret(k, ret(i, a[0], ret(j, a[1], a[2])), a[3]);
        if(tmp == 10) return  "("+to(0)+expr[i]+"("+to(1)+expr[j]+to(2)+"))"+expr[k]+to(3);
      }
      else if(t == 3){ // a+(b+(c+d))
        tmp = ret(i, a[0], ret(j, a[1], ret(k, a[2], a[3])));
        if(tmp == 10) return to(0)+expr[i]+"("+to(1)+expr[j]+"("+to(2)+expr[k]+to(3)+"))";
      }
      else{ // a+((b+c)+d)
        tmp = ret(i, a[0], ret(k, ret(j, a[1], a[2]), a[3]));
        if(tmp == 10) return to(0)+expr[i]+"(("+to(1)+expr[j]+to(2)+")"+expr[k]+to(3)+")";
      }
    }
  }while(next_permutation(ALL(a)));

  return "0";
}

int main()
{
  while((cin >> a[0] >> a[1] >> a[2] >> a[3]) && a[0]){
    sort(ALL(a));
    cout << solve() << endl;
  }

  return 0;
}