#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;

int calc(string ex)
{
	if(ex[0]=='(')	ex=ex.substr(1,ex.length()-2);

	for(int i=0,depth=0;i<ex.length();i++){
		if     (ex[i]=='(')	depth++;
		else if(ex[i]==')')	depth--;
		else{
			if(depth==0 && (ex[i]=='+'||ex[i]=='-'||ex[i]=='*')){
				switch(ex[i]){
					case '+':	return calc(ex.substr(0,i-1))+calc(ex.substr(i+2));
					case '-':	return calc(ex.substr(0,i-1))-calc(ex.substr(i+2));
					case '*':	return calc(ex.substr(0,i-1))*calc(ex.substr(i+2));
				}
			}
		}
	}

	return ex[0]-'0';
}

int main()
{
	char op[]={'+','-','*'};
	char *fmt[]={"(((%d %c %d) %c %d) %c %d)",
				 "((%d %c (%d %c %d)) %c %d)",
				 "((%d %c %d) %c (%d %c %d))",
				 "(%d %c ((%d %c %d) %c %d))",
				 "(%d %c (%d %c (%d %c %d)))"};

	 for(int a,b,c,d;scanf("%d%d%d%d",&a,&b,&c,&d),a|b|c|d;){
		int n[]={a,b,c,d};
		sort(n,n+4);
		do{
			for(int i=0;i<3;i++)for(int j=0;j<3;j++)for(int k=0;k<3;k++){
				for(int l=0;l<5;l++){
					char ex[20];
					sprintf(ex,fmt[l],n[0],op[i],n[1],op[j],n[2],op[k],n[3]);
					if(calc(ex)==10){
						puts(ex);
						goto FOUND;
					}
				}
			}
		}while(next_permutation(n,n+4));
		puts("0");
		FOUND:;
	}

	return 0;
}