#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<cstdlib>
#include<queue>
#include<cctype>
#include<sstream>
using namespace std;
#define P pair<int, const char*>
#define REP(i, j) for(int i = 0; i < j; i++)
#define FOR(i, j, k) for(int i = j; i < k; i++)
const int N = 10;

P fact(const char *p);
P term(const char *p);
P expr(const char *p);

void disp(string str){
    REP(i, str.length()){
        if(str[i] == '+' || str[i] == '-' || str[i] == '*') cout <<" " <<str[i] <<" ";
        else cout <<str[i];
    }
    cout <<endl;
}

void loop(string n[4], string op[3]){
    REP(a, 4){
        REP(b, 4){
            if(a == b) continue;
            REP(c, 4){
                if(c == a || c == b) continue;
                REP(d, 4){
                    if(d == a || d == b || d == c) continue;
                    REP(aa, 3){
                        REP(bb, 3){
                            REP(cc, 3){
                                string str = "(" + n[a] + op[aa] + n[b] + op[bb] + n[c] + op[cc] + n[d] + ")";
                                if(expr(str.c_str()).first == N){ disp(str); return ;}
                                str = "(" + n[a] + op[aa] + "(" + n[b] + op[bb] + n[c] + ")" + op[cc] + n[d] + ")";
                                if(expr(str.c_str()).first == N){ disp(str); return ;}
                                str = "(" + n[a] + op[aa] + "(" + n[b] + op[bb] + n[c] + op[cc] + n[d] + "))";
                                if(expr(str.c_str()).first == N){ disp(str); return ;}
                                str = "(" + n[a] + op[aa] + "(" + n[b] + op[bb] + "(" + n[c] + op[cc] + n[d] + ")))";
                                if(expr(str.c_str()).first == N){ disp(str); return ;}
                                str = "(" + n[a] + op[aa] + "((" + n[b] + op[bb] + n[c] + ")"  + op[cc] + n[d] + "))";
                                if(expr(str.c_str()).first == N){ disp(str); return ;}
                                str = "((" + n[a] + op[aa] + n[b] + ")" + op[bb] + "(" + n[c] + op[cc] + n[d] + "))";
                                if(expr(str.c_str()).first == N){ disp(str); return ;}
                            }
                        }
                    }
                }
            }
        }
    }
    //cout <<n[0] <<" " <<n[1] <<" " <<n[2] <<" " <<n[3] <<endl;
    cout <<"0" <<endl; return ;
}

int main(){
    string n[4], op[3] = {"+", "-", "*"};
    while(cin >>n[0] >>n[1] >>n[2] >>n[3] && n[0] != "0") loop(n, op);
    return 0;
}

P fact(const char *p){
    if(isdigit(*p)){
        int t = *(p++) - '0';
        while(isdigit(*p)) t = t * 10 + *(p++) - '0';
        return P(t, p);
    } else if(*p == '('){
        P r = expr(p + 1);
        if(*r.second != ')') exit(0);
        return P(r.first, r.second + 1);
    } else{
        exit(0);
    }
}


P term(const char *p){
    P r = fact(p);
    while(*r.second == '*' || *r.second == '/'){
        char op = *r.second;
        int tmp = r.first;
        r = fact(r.second + 1);
        if(op == '*') r.first = tmp * r.first;
        else r.first = tmp / r.first;
    }
    return r;
}

P expr(const char *p){
    P r = term(p);
    while(*r.second == '+' || *r.second == '-'){
        char op = *r.second;
        int tmp = r.first;
        r = term(r.second + 1);
        if(op == '+') r.first = tmp + r.first;
        else r.first = tmp - r.first;
    }
    return r;
}