#include <cstdio>
#include <vector>
#include <algorithm>
#include <cstring>
#include <string>
#include <cctype>
#include <sstream>
#include <cmath>
#include <climits>
#include <set>
#include <map>

using namespace std;

#define reep(i,f,n) for(int i=f; i<int(n); ++i)
#define rep(i,n) reep(i,0,n)

typedef vector<int> vi;
typedef pair<string, int> psi;

string itoa(int v)
{
	stringstream sstr;
	sstr << v;
	return sstr.str();
}

int a[4];

vector<psi> search(int left, int right)
{
	if(right-left == 1)
		return vector<psi>(1, psi(itoa(a[left]), a[left]));

	vector<psi> ret;
	reep(i, left+1, right){
		vector<psi> b = search(left, i);
		vector<psi> c = search(i, right);
		rep(j, b.size()) rep(k, c.size()){
			ret.push_back(psi(string("(") + b[j].first + "+" + c[k].first + ")", b[j].second+c[k].second));
			ret.push_back(psi(string("(") + b[j].first + "-" + c[k].first + ")", b[j].second-c[k].second));
			ret.push_back(psi(string("(") + b[j].first + "*" + c[k].first + ")", b[j].second*c[k].second));
		}
	}

	return ret;
}

int main()
{
	while(1){
		rep(i, 4) scanf("%d", &a[i]);
		if(!a[0]) break;
		sort(a, a+4);

		bool con = true;
		do{
			vector<psi> h = search(0, 4);
			rep(i, h.size()){
				if(h[i].second == 10){
					puts(h[i].first.c_str());
					con = false;
					break;
				}
			}
		}while(con && next_permutation(a, a+4));

		if(con)
			puts("0");
	}

	return 0;
}