// AOJ q0041
// YAMADA Terushige
// 2013.5.18

#include<iostream>
#include<string>
#include<vector>
 
using namespace std;

typedef vector<pair<string,int> > Term;
typedef Term::iterator It;

string calc(Term term){
  if(term.size()==1){
    if(term[0].second==10)
      return term[0].first;
    else return "0";
  }
  for(int i=0;i<term.size();i++){
    for(int j=0;j<term.size();j++){
      if(i==j) continue;
      Term newt;
      for(int k=0;k<term.size();k++){
	if(k!=i && k!=j) newt.push_back(term[k]);
      }
      string ex;
      int val;
      // +
      ex='('+term[i].first+'+'+term[j].first+')';
      val=term[i].second+term[j].second;
      newt.push_back(make_pair(ex,val));
      ex=calc(newt);
      if(ex!="0") return ex;
      newt.pop_back();

      // -
      ex='('+term[i].first+'-'+term[j].first+')';
      val=term[i].second-term[j].second;
      newt.push_back(make_pair(ex,val));
      ex=calc(newt);
      if(ex!="0") return ex;
      newt.pop_back();

      // *
      ex='('+term[i].first+'*'+term[j].first+')';
      val=term[i].second*term[j].second;
      newt.push_back(make_pair(ex,val));
      ex=calc(newt);
      if(ex!="0") return ex;
      newt.pop_back();
    }
  }
  return "0";
}

int main(){

  int a,b,c,d;
  string aa,bb,cc,dd;
  while(1){
    Term term;
    cin >> a >> b >> c >> d;
    if (a==0 && b==0 && c==0 && d==0) break;
    aa='0'+a;
    bb='0'+b;
    cc='0'+c;
    dd='0'+d;
    term.push_back(make_pair(aa,a));
    term.push_back(make_pair(bb,b));
    term.push_back(make_pair(cc,c));
    term.push_back(make_pair(dd,d));

    cout << calc(term) << endl;;
  }


}
