#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;
}