#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct element_t {
    int op;
    int val;
    friend bool operator<(const element_t& lhs, const element_t& rhs)
    {
        return lhs.op < rhs.op || (lhs.op == rhs.op && lhs.val < rhs.val);
    }
};
void disp(const element_t *e, int len)
{
    string s[4];
    int slen = 0, i;
    for (i = 0; i < 7; i ++) {
        if (e[i].op) {
            switch (e[i].op) {
            case 1:
                s[slen-2] = "(" + s[slen-2] + " + " + s[slen-1] + ")";
                slen --;
                break;
            case 2:
                s[slen-2] = "(" + s[slen-2] + " - " + s[slen-1] + ")";
                slen --;
                break;
            case 3:
                s[slen-2] = "(" + s[slen-2] + " * " + s[slen-1] + ")";
                slen --;
                break;
            }
        } else {
            char buf[10];
            sprintf (buf, "%d", e[i].val);
            s[slen++] = buf;
        }
    }
    cout << s[0] << endl;
}
int check(const element_t *e)
{
    int s[4], slen = 0, i;
    for (i = 0; i < 7; i ++) {
        if (e[i].op) {
            if (slen < 2)
                return 0;
            switch (e[i].op) {
            case 1:
                s[slen-2] += s[slen-1];
                slen --;
                break;
            case 2:
                s[slen-2] -= s[slen-1];
                slen --;
                break;
            case 3:
                s[slen-2] *= s[slen-1];
                slen --;
                break;
            }
        } else {
            s[slen++] = e[i].val;
        }
    }
    if (s[0] == 10) {
        disp(e, 7);
        return 1;
    }
    return 0;
}
int solve_op(const int *v, const int *op)
{
    element_t e[7];
    int i;
    for (i = 0; i < 4; i ++) {
        e[i].op = 0;
        e[i].val = v[i];
    }
    for (i = 0 ; i < 3; i ++) {
        e[4+i].op = op[i];
        e[4+i].val = 0;
    }
    sort(e, e+7);
    while (next_permutation(e, e+7)) {
        if (e[0].op == 0 && e[1].op == 0 && e[6].op != 0) {
            if (check(e))
                return 1;
        }
    }
    return 0;
}
void solve(const int *v)
{
    int op[3];
    for (op[0] = 1; op[0] <= 3; op[0] ++) {
        for (op[1] = 1; op[1] <= 3; op[1] ++) {
            for (op[2] = 1; op[2] <= 3; op[2] ++) {
                if (solve_op(v, op))
                    return;
            }
        }
    }
    puts("0");
}
int main()
{
    int v[4];
    while (scanf("%d%d%d%d", v+0, v+1, v+2, v+3)>0, v[0]||v[1]||v[2]||v[3]) {
        solve(v);
    }
    return 0;
}