#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <utility>
#include <stack>
#include <queue>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>

using namespace std;
 
#define rep(i,n) for(int i=0; i<(n); i++)
#define repc(i,s,e) for(int i=(s); i<(e); i++)
#define pb(n) push_back((n))
#define mp(n,m) make_pair((n),(m))
#define all(r) r.begin(),r.end()
#define fi first
#define se second

//typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vii;
//typedef vector<ll> vl;
//typedef vector<vl> vll;
typedef pair<int,int> pii;
//typedef pair<ll,ll> pll;

vi v(4);
string e="",enz="+-*";
int f;

int calc(int a,int b,char c){
	if(c=='+')return a+b;
	if(c=='-')return a-b;
	if(c=='*')return a*b;
	return -1;
}

bool judge1(string s){
	return calc(calc(calc(v[0],v[1],s[0]),v[2],s[1]),v[3],s[2])==10;
}

bool judge2(string s){
	return calc(calc(v[0],v[1],s[0]),calc(v[2],v[3],s[2]),s[1])==10;
}

void solve(string s){
	if(f!=0)return;
	if(s.size()==3){
		if(judge1(s)){
			f=1;
			e=s;
		}
		if(judge2(s)){
			f=2;
			e=s;
		}
		return;
	}
	rep(i,3){
		string s2=s;
		s2+=enz[i];
		solve(s2);
	}
}

int main(){
	while(1){
		cin>>v[0]>>v[1]>>v[2]>>v[3];
		if(v[0]==0&&v[1]==0&&v[2]==0&&v[3]==0)break;
		e="";
		f=0;
		sort(all(v));
		do{
			solve(e);
			if(f==1){
				cout<<"(("<<v[0]<<" "<<e[0]<<" "<<v[1]<<") "<<e[1]<<" "<<v[2]<<") "<<e[2]<<" "<<v[3]<<endl;
				break;
			}
			else if(f==2){
				cout<<"("<<v[0]<<" "<<e[0]<<" "<<v[1]<<") "<<e[1]<<" ("<<v[2]<<" "<<e[2]<<" "<<v[3]<<")"<<endl;
				break;
			}
			//cout<<v[0]<<v[1]<<v[2]<<v[3]<<endl;
		}while(next_permutation(all(v)));
		if(f==0)cout<<"0"<<endl;
	}
}