#include <cstdio>
#include <string>
#include <stack>
#include <sstream>
#include <iostream>

using namespace std;

int a[4],aa[4];
bool used[4];
int cal[4],calk[4];
char kind[3]={'+','-','*'};
string str;

int func(){
	stack<int> s;
	int j=0;
	for(int i=0;i<4;i++){
		s.push(aa[i]);
		while(cal[j]==i && j<3){
			if(s.size()<2)return -1;
			int a=s.top();
			s.pop();
			int b=s.top();
			s.pop();
			if(calk[j]==0)s.push(a+b);
			if(calk[j]==1)s.push(a-b);
			if(calk[j]==2)s.push(a*b);
			j++;
		}
	}
	if(s.size()!=1)return -1;
	return s.top();
}

string func2(){
	stack<string> s;
	int j=0;
	for(int i=0;i<4;i++){
		ostringstream os;
		os << aa[i];
		s.push(os.str());
		while(cal[j]==i && j<3){
			string a=s.top();
			s.pop();
			string b=s.top();
			s.pop();
			if(calk[j]==0)s.push("("+a+" " + "+" + " "+ b+")");
			if(calk[j]==1)s.push("("+a+" " + "-" + " "+ b+")");
			if(calk[j]==2)s.push("("+a+" " + "*" + " "+ b+")");
			j++;
		}
	}
	return s.top();
}

void dfs(int v,int v2){
	if(v==4 && v2==3){
		int res=func();
		if(res==10)str=func2();
		return;
	}
	if(v<4){
		for(int i=0;i<4;i++){
			if(!used[i]){
				aa[v]=a[i];
				used[i]=true;
				dfs(v+1,v2);
				used[i]=false;
			}
		}
	}
	if(v==4){
		for(int i=0;i<=2;i++){
			for(int j=0;j<4;j++){
				if(v2>0 && cal[v2-1]>j)continue;
				calk[v2]=i;
				cal[v2]=j;
				dfs(v,v2+1);
			}
		}	
	}
}

int main(void){
	while(1){
		for(int i=0;i<4;i++){
			scanf("%d",&a[i]);
		}
		if(a[0]==0)break;
		str="0";
		dfs(0,0);
		cout << str << endl;
	}
	return 0;
}