#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <deque>
#include <list>
#include <queue>
#include <stack>
#include <vector>
#include <utility>
#include <algorithm>
#include <map>
#include <set>
#include <complex>
#include <cmath>
#include <limits>
#include <ctime>
using namespace std;

#define rep(i,a,n) for(int i=a; i<n; i++)
#define repr(i,a,n) for(int i=a; i>=n; i--)
#define pb(a) push_back(a)
#define fr first
#define sc second
#define INF 999999999

#define X real()
#define Y imag()
#define EPS (1e-10)
#define EQ(a,b) (abs((a) - (b)) < EPS)
#define EQV(a,b) ( EQ((a).X, (b).X) && EQ((a).Y, (b).Y) )
#define LE(n, m) ((n) < (m) + EPS)
#define GE(n, m) ((n) + EPS > (m))

typedef vector<int> VI;
typedef vector<VI> MAT;
typedef pair<int, int> pii;
typedef long long int ll;

typedef complex<double> P;
typedef pair<P, P> L;
typedef pair<P, double> C;

namespace std {
    bool operator<(const P a, const P b) {
        return a.X != b.X ? a.X < b.X : a.Y < b.Y;
    }
}

int const MOD = 1000000007;
int calc(int a, int b, int op) {
    if(op == 0) return a + b;
    if(op == 1) return a - b;
    if(op == 2) return a * b;
}

char op[3] = {'+', '-', '*'};
bool flag;
void solve(int a, int b, int c, int d) {
    rep(i,0,3) rep(j,0,3) rep(k,0,3) {
        if(calc(calc(a, b, i), calc(c, d, j), k) == 10) {
            printf("((%d %c %d) %c (%d %c %d))\n", a, op[i], b, op[k], c, op[j], d);
            flag = true;
            return;
        }
        if(calc(calc(calc(a, b, i), c, j), d, k) == 10) {
            printf("(((%d %c %d) %c %d) %c %d)\n", a, op[i], b, op[j], c, op[k], d);
            flag = true;
            return;
        }
        if(calc(calc(a, calc(b, c, i), j), d, k) == 10) {
            printf("((%d %c (%d %c %d)) %c %d)\n", a, op[i], b, op[j], c, op[k], d);
            flag = true;
            return;
        }
    }
}

int main() {
    int a,b,c,d;
    while(cin >> a >> b >> c >> d) {
        if(a == 0 && b == 0 && c == 0 && d == 0) break;
        vector<int> v(4);
        v[0] = a, v[1] = b, v[2] = c, v[3] = d;
        sort(v.begin(), v.end());
        flag = false;
        do {
            solve(v[0], v[1], v[2], v[3]);
        }while(next_permutation(v.begin(), v.end()) && !flag);
        if(!flag) cout << 0 << endl;
    }
    return 0;
}