#include <iostream>
#include <cstdio>

#define A 0
#define B 1
#define C 2
#define D 3
#define X 4
#define Y 5
#define ADD 0
#define PUL 1
#define MUL 2

using namespace std;

bool flag;
int n[6];
char op[3]={'+','-','*'};

int cal(int x,int y,int oper){
    if(oper==ADD){
        return(n[x]+n[y]);
    }
    if(oper==PUL){
        return(n[x]-n[y]);
    }
    if(oper==MUL){
        return(n[x]*n[y]);
    }
    return 0;
}

void prior(int a,int b, int c, int d,int f,int s,int t){
    int src;
    int x,y;
    //p1:(ab)cd
    n[X]=cal(a,b,f);
    if(s!=MUL&&t==MUL){
        n[Y]=cal(c,d,t);
        src=cal(X,Y,s);
    }
    else{
        n[Y]=cal(X,c,s);
        src=cal(Y,d,t);
    }
    if(src==10){
        printf("((%d %c %d) %c %d %c %d)\n",n[a],op[f],n[b],op[s],n[c],op[t],n[d]);
        flag=false;
        return;
    }
    //p2:a(bc)d
    n[X]=cal(b,c,s);
    if(f!=MUL&&t==MUL){
        n[Y]=cal(X,d,t);
        src=cal(a,Y,f);
    }
    else{
        n[Y]=cal(a,X,f);
        src=cal(Y,d,t);
    }
    if(src==10){
        printf("(%d %c (%d %c %d) %c %d)\n",n[a],op[f],n[b],op[s],n[c],op[t],n[d]);
        flag=false;
        return;
    }
    //p3:ab(cd)
    n[X]=cal(c,d,t);
    if(f!=MUL&&s==MUL){
        n[Y]=cal(b,X,s);
        src=cal(a,Y,f);
    }
    else{
        n[Y]=cal(a,b,f);
        src=cal(Y,X,s);
    }
    if(src==10){
        printf("(%d %c %d %c (%d %c %d))\n",n[a],op[f],n[b],op[s],n[c],op[t],n[d]);
        flag=false;
        return;
    }
    //p4:(abc)d
    if(f!=MUL&&s==MUL){
        n[X]=cal(b,c,s);
        n[Y]=cal(a,X,f);
    }
    else{
        n[X]=cal(a,b,f);
        n[Y]=cal(X,c,s);
    }
    src=cal(Y,d,t);
    if(src==10){
        printf("((%d %c %d %c %d) %c %d)\n",n[a],op[f],n[b],op[s],n[c],op[t],n[d]);
        flag=false;
        return;
    }
    //p5:a(bcd)
    if(s!=MUL&&t==MUL){
        n[X]=cal(c,d,t);
        n[Y]=cal(b,X,s);
    }
    else{
        n[X]=cal(b,c,s);
        n[Y]=cal(X,d,t);
    }
    src=cal(a,Y,f);
    if(src==10){
        printf("(%d %c (%d %c %d %c %d))\n",n[a],op[f],n[b],op[s],n[c],op[t],n[d]);
        flag=false;
        return;
    }
    //p6:(ab)(ac)
    n[X]=cal(a,b,f);
    n[Y]=cal(c,d,t);
    src=cal(X,Y,s);
    if(src==10){
        printf("((%d %c %d) %c (%d %c %d))\n",n[a],op[f],n[b],op[s],n[c],op[t],n[d]);
        flag=false;
        return;
    }
    //p7:a(b(cd))
    n[X]=cal(c,d,t);
    n[Y]=cal(b,X,s);
    src=cal(a,Y,f);
    if(src==10){
        printf("(%d %c (%d %c (%d %c %d)))\n",n[a],op[f],n[b],op[s],n[c],op[t],n[d]);
        flag=false;
        return;
    }
    //p8:a((bc)d)
    n[X]=cal(b,c,s);
    n[Y]=cal(X,d,t);
    src=cal(a,Y,f);
    if(src==10){
        printf("(%d %c ((%d %c %d) %c %d))\n",n[a],op[f],n[b],op[s],n[c],op[t],n[d]);
        flag=false;
        return;
    }
    //p9:((ab)c)d
    n[X]=cal(a,b,f);
    n[Y]=cal(X,c,s);
    src=cal(Y,d,t);
    if(src==10){
        printf("(%d %c (%d %c (%d %c %d)))\n",n[a],op[f],n[b],op[s],n[c],op[t],n[d]);
        flag=false;
        return;
    }
    //p10:(a(bc))d
    n[X]=cal(b,c,s);
    n[Y]=cal(a,X,f);
    src=cal(Y,d,t);
    if(src==10){
        printf("(%d %c ((%d %c %d) %c %d))\n",n[a],op[f],n[b],op[s],n[c],op[t],n[d]);
        flag=false;
        return;
    }
    return;
}


void solve(int a,int b,int c,int d){
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            for(int k=0;k<3;k++){
                if(flag)prior(a,b,c,d,i,j,k);
                else return;
            }
        }
    }
    return;
}

int main(void){
    while(cin>>n[A]>>n[B]>>n[C]>>n[D],n[0]){
        flag=true;
        for(int i=0;i<4&&flag;i++){
            for(int j=0;j<4&&flag;j++){
                for(int k=0;k<4&&flag;k++){
                    for(int l=0;l<4&&flag;l++){
                        if(i!=j&&i!=k&&i!=l){
                            if(j!=k&&j!=l){
                                if(k!=l){
                                    if(flag)solve(i,j,k,l);
                                }
                            }
                        }
                    }
                }
            }
        }
        if(flag)cout<<'0'<<endl;
    }
    return(0);
}