#include<deque>
#include<list>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<vector>
#include<algorithm>
#include<string>
#include<iostream>
#include<sstream>
#include<cmath>
#include<cstdlib>
#include<cstdio>
#include<cstring>
using namespace std;
int fn(int p,int q,int r,int s){
  if(0){
  }else if(p*q+r*s==10){
    cout<<"(("<<p<<" * "<<q<<") + ("<<r<<" * "<<s<<"))"<<endl;
  }else if(p*q-r*s==10){
    cout<<"(("<<p<<" * "<<q<<") - ("<<r<<" * "<<s<<"))"<<endl;
  }else if(r*s-p*q==10){
    cout<<"(("<<r<<" * "<<s<<") - ("<<p<<" * "<<q<<"))"<<endl;
  }else{
    return -1;
  }
  return 0;
}
int a[4],b[4],c[4],d[3];
char e[4]="+-*";
int fl(int p){
  int i;
  if(p==3){
    int sm=c[0];
    for(i=0;i<3;i++){
      if(0){
      }else if(d[i]==0){
	sm+=c[i+1];
      }else if(d[i]==1){
	sm-=c[i+1];
      }else if(d[i]==2){
	sm*=c[i+1];
      }
    }
    if(sm==10){
      cout<<"((("<<c[0]<<" "<<e[d[0]]<<" "<<c[1]<<") "<<e[d[1]]<<" "<<c[2]<<") "<<e[d[2]]<<" "<<c[3]<<")"<<endl;
      return 1;
    }
  }else{
    for(i=0;i<3;i++){
      d[p]=i;
      if(fl(p+1))
	return 1;
    }
  }
  return 0;
}
int fm(int p){
  int i;
  if(p==4){
    if(fl(0))
      return 1;
  }else{
    for(i=0;i<4;i++){
      if(b[i]){
	b[i]=0;
	c[p]=a[i];
	if(fm(p+1))
	  return 1;
	b[i]=-1;
      }
    }
  }
  return 0;
}
int main(){
  while(cin>>a[0]>>a[1]>>a[2]>>a[3]&&(a[0]||a[1]||a[2]||a[3])){
    if(fn(a[0],a[1],a[2],a[3])){
      if(fn(a[0],a[2],a[1],a[3])){
	if(fn(a[0],a[3],a[1],a[2])){
	  memset(b,-1,sizeof(b));
	  if(fm(0)==0)
	    cout<<0<<endl;
	}
      }
    }
  }
  return 0;
}