#include <bits/stdc++.h>
using namespace std;

#define rep(i,x,y) for(int i=(x);i<(y);++i)
#define debug(x) #x << "=" << (x)

#ifdef DEBUG
#define _GLIBCXX_DEBUG
#define dump(x) std::cerr << debug(x) << " (L:" << __LINE__ << ")" << std::endl
#else
#define dump(x)
#endif

typedef long long int ll;
typedef pair<int,int> pii;
//template<typename T> using vec=std::vector<T>;

const int inf=1<<30;
const long long int infll=1LL<<58;
const double eps=1e-9;
const int dx[]={1,0,-1,0},dy[]={0,1,0,-1};

template <typename T> ostream &operator<<(ostream &os, const vector<T> &vec){
	os << "[";
	for (const auto &v : vec) {
		os << v << ",";
	}
	os << "]";
	return os;
}

string int_to_string(int x){
    stringstream ss;
    ss << x;
    return ss.str();
}

vector<pair<int,string>> nv(const vector<pair<int,string>>& v,const vector<pair<int,string>>& tmp,const vector<int>& idxs,char op){
    auto x=v[idxs[0]],y=v[idxs[1]];
    pair<int,string> p;
    if(op=='+') p=make_pair(x.first+y.first,"("+x.second+" + "+y.second+")");
    else if(op=='-') p=make_pair(x.first-y.first,"("+x.second+" - "+y.second+")");
    else if(op=='*') p=make_pair(x.first*y.first,"("+x.second+" * "+y.second+")");
    auto res=tmp; res.emplace_back(p);
    return move(res);
}

string dfs(vector<pair<int,string>> v){
    if(v.size()==1){
        if(v[0].first==10) return v[0].second;
        else return "";
    }

    string res="";
    rep(b,0,1<<v.size()){
        if(__builtin_popcount(b)!=2) continue;
        vector<pair<int,string>> tmp;
        vector<int> idxs;
        rep(i,0,v.size()){
            if((1&(b>>i))==0) tmp.emplace_back(v[i]);
            else idxs.emplace_back(i);
        }

        res=max(res,dfs(nv(v,tmp,idxs,'+')));
        res=max(res,dfs(nv(v,tmp,idxs,'*')));
        res=max(res,dfs(nv(v,tmp,idxs,'-')));
        swap(idxs[0],idxs[1]);
        res=max(res,dfs(nv(v,tmp,idxs,'-')));
    }
    return res;
}

void solve(){
    int a,b,c,d;
    while(cin >> a >> b >> c >> d){
        if(a==0 and b==0 and c==0 and d==0) break;
        vector<pair<int,string>> v;
        v.emplace_back(make_pair(a,int_to_string(a)));
        v.emplace_back(make_pair(b,int_to_string(b)));
        v.emplace_back(make_pair(c,int_to_string(c)));
        v.emplace_back(make_pair(d,int_to_string(d)));
        string ans=dfs(v);

        if(ans.empty()) cout << 0 << endl;
        else cout << ans << endl;
    }
}

int main(){
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	solve();
	return 0;
}