#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#include <string>
#include <sstream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>

#define rep(i, n) for(int i = 0; i < (n); i++)
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define all(v) (v).begin(), (v).end()
#define rev(s) (s).rbegin(), (s).rend()
#define MP make_pair
#define X first
#define Y second

using namespace std;

typedef long long ll;
typedef pair<int, int> P;
typedef vector<int> vi;

int op(int lhs, int rhs, int ope){
	if(ope == 0) return lhs+rhs;
	if(ope == 1) return lhs-rhs;
	if(ope == 2) return lhs*rhs;
}

int calc(int a, int b, int c, int d, int o1, int o2, int o3){
	if( op(op(op(a, b, o1), c, o2), d, o3) == 10) return 0; // 1->2->3
	if( op(op(a, op(b, c, o2), o1), d, o3) == 10) return 1; // 2->1->3
//	if(	op(a, op(op(b, c, o2), d, o3), o1) == 10) return 2; // 2->3->1
//	if(	op(a, op(b, op(c, d, o3), o2), o1) == 10) return 3; // 3->2->1
	if(	op(op(a, b, o1), op(c, d, o3), o2) == 10) return 4; // 1->3->2 (== 3->1->2)
	return -1;
}

void output(int a, int b, int c, int d, int o1, int o2, int o3, int type){
	string ope = "+-*";
	if(type == 0) printf("(((%d %c %d) %c %d) %c %d)\n", a, ope[o1], b, ope[o2], c, ope[o3], d);
	if(type == 1) printf("((%d %c (%d %c %d)) %c %d)\n", a, ope[o1], b, ope[o2], c, ope[o3], d);
	if(type == 2) printf("(%d %c ((%d %c %d) %c %d))\n", a, ope[o1], b, ope[o2], c, ope[o3], d);
	if(type == 3) printf("(%d %c (%d %c (%d %c %d)))\n", a, ope[o1], b, ope[o2], c, ope[o3], d);
	if(type == 4) printf("((%d %c %d) %c (%d %c %d))\n", a, ope[o1], b, ope[o2], c, ope[o3], d);
}

bool solve(int a, int b, int c, int d){
	rep(o1, 3) rep(o2, 3) rep(o3, 3){
		int res = calc(a, b, c, d, o1, o2, o3);
		if(res != -1){
			output(a, b, c, d, o1, o2, o3, res);
			return true;
		}
	}
	return false;
}

int main(){
	vi a(4);
	while(1){
		rep(i, 4) cin >> a[i];
		if(!a[0]) break;
		sort(all(a));
		bool ok;
		do{
			ok = solve(a[0], a[1], a[2], a[3]);
		}while(!ok && next_permutation(all(a)));
		if(!ok) cout << "0" << endl;
	}

	return 0;
}