#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <utility>
#include <algorithm>
#include <set>
using namespace std;

typedef vector< pair<string, int> > VP;


string rec(VP m)
{
	if(m.size() == 1){
		if(m.begin()->second == 10){
			return m.begin()->first;
		}else{
			return "0";
		}
	}
	
	for(VP::iterator it=m.begin();it != m.end();it++){
		for(VP::iterator jt=m.begin();jt != m.end();jt++){
			if( it == jt) continue;
			string res;
			VP tmp, tmp2;
			for(VP::iterator kt=m.begin();kt != m.end();kt++){
				if( kt==it || kt==jt ) continue;
				tmp.push_back(*kt);
			}
			
			tmp2 = tmp;
			string exp = string("(") + it->first + string("+") + jt->first + string(")");
			tmp2.push_back( make_pair(exp, it->second+jt->second) );
			res = rec(tmp2);
			if(res != "0") return res;
			
			tmp2 = tmp;
			exp = string("(") + it->first + string("-") + jt->first + string(")");
			tmp2.push_back( make_pair(exp, it->second - jt->second) );
			res = rec(tmp2);
			if(res != "0") return res;
			
			tmp2 = tmp;
			exp = string("(") + it->first + string("*") + jt->first + string(")");
			tmp2.push_back( make_pair(exp, it->second * jt->second) );
			res = rec(tmp2);
			if(res != "0") return res;
		}
	}
	return "0";
}

int main()
{
	vector<int> v(4);
	string tmp;
	VP m;
	while(1){
		cin >> v[0] >> v[1] >> v[2] >> v[3];
		if(! (v[0] || v[1] || v[2] || v[3] )) break;
		m.clear();
		
		for(int i=0;i<4;i++){
			tmp = "";
			tmp += v[i] + '0';
			m.push_back( make_pair(tmp, v[i] ) );
		}
		
		cout << rec(m) <<endl;
	}
	return 0;
}