#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <functional>
#include <numeric>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#include <sstream>
#include <complex>
#include <fstream>
#include <bitset>

using namespace std;

typedef long long ll;
typedef pair<ll, ll> P;
typedef vector<ll> V;
typedef complex<double> Point;

#define PI acos(-1.0)
#define EPS 1e-10
const ll INF = 1e9 + 7;
const ll MOD = 1e9 + 7;

#define FOR(i,a,b) for(long long i=(a);i<(b);i++)
#define REP(i,N) for(long long i=0;i<(N);i++)
#define ALL(s) (s).begin(),(s).end()
#define EQ(a,b) (abs((a)-(b))<EPS)
#define EQV(a,b) ( EQ((a).real(), (b).real()) && EQ((a).imag(), (b).imag()) )
#define fi first
#define se second

vector<int> a(4);
string table = "+-*";
string f;

int calc(int a, int b, int op){
	if (op == 0)return a + b;
	else if (op == 1)return a - b;
	else return a*b;
}

int main(){
	while (1){
		bool flag = 0;
		REP(i, 4)cin >> a[i];
		if (!(a[0] || a[1] || a[2] || a[3]))break;
		sort(ALL(a));
		do{
			REP(i, 3){
				REP(j, 3){
					REP(k, 3){
						//cout << "(((" << a[0] << table[i] << a[1] << ")" << table[j]
						//	<< a[2] << ")" << table[k] << a[3] << ")" << endl;
						if (calc(calc(a[0], a[1], i), calc(a[2], a[3], j), k) == 10){
							cout << "((" << a[0] << table[i] << a[1] << ")" << table[k]
								<< "(" << a[2] << table[j] << a[3] << "))" << endl;
							flag = 1;
						}
						else if (calc(calc(calc(a[0], a[1], i), a[2], j), a[3], k) == 10){
							cout << "(((" << a[0] << table[i] << a[1] << ")" << table[j]
								<< a[2] << ")" << table[k] << a[3] << ")" << endl;
							flag = 1;
						}
						if (flag)break;
					}
					if (flag)break;
				}
				if (flag)break;
			}
			if (flag)break;
			//REP(i, 4){
			//	cout << a[i] << " ";
			//}
			//cout << endl;
		} while (next_permutation(ALL(a)));
		if (!flag)cout << 0 << endl;
	}
}