#include <iostream>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <algorithm>
#include <math.h>
#include <map>
#include <functional>
#include <iomanip>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <typeinfo>
#define PI 3.14159265359
#define INF 99999999
#define rep(i, n) for(int i=0; i<n; i++)
#define REP(n) rep(i, n)
#define pb push_back
#define mp make_pair
typedef long long ll;
using namespace std;
typedef pair<int, int> P;

string inp;
string number;

string del_space(string s)
{
	size_t pos;
	while ((pos = s.find_first_of(" ")) != string::npos) s.erase(pos, 1);
	return s;
}

string created_num = "00000000";
stack<int> st;

bool solve(void)
{
	int c = 0;
	while (created_num[c] != '\0')
	{
		if (created_num[c] >= '0' && created_num[c] <= '9')
		{
			st.push(created_num[c] - '0');
		} else {
			int a, b;
			a = st.top(); st.pop();
			b = st.top(); st.pop();
			if (created_num[c] == '+')
			{
				st.push(b + a);
			} else if (created_num[c] == '-') {
				st.push(b - a);
			} else if (created_num[c] == '*') {
				st.push(b * a);
			}
		}
		c++;
	}
	int ans = st.top();
	if (ans == 10) return true;
	else return false;
}

bool make_rpn(int num, int exp, bool first = false)
{
	static int isused[4] = {0, 0, 0, 0};
	if (first)
	{
		isused[0] = 0;
		isused[1] = 0;
		isused[2] = 0;
		isused[3] = 0;
	}
	int i;

	if (num + exp == 7)
	{
		created_num[7] = '\0';
		//cout << created_num << endl;
		if (solve())
		{
			return true;
		}
	} else {
		if (num - exp >= 2)
		{
			created_num[num + exp] = '+';
			if (make_rpn(num, exp + 1)) return true;
			created_num[num + exp] = '-';
			if (make_rpn(num, exp + 1)) return true;
			created_num[num + exp] = '*';
			if (make_rpn(num, exp + 1)) return true;
		}
		if (num <= 3)
		{
			for (i=0; i<4; i++)
			{
				if (isused[i] == 0)
				{
					isused[i] = 1;
					created_num[num + exp] = number[i];
					if (make_rpn(num + 1, exp)) return true;
					isused[i] = 0;
				}
			}
		}
	}
	return false;
}

stack<string> st2;

string get_tyuuchi()
{
	while (!st2.empty()) st2.pop();

	for (int i=0; i<created_num.length(); i++)
	{
		string cs = created_num.substr(i, 1);
		char c = created_num[i];

		string a, b;

		if ('0' <= c && c <= '9')
		{
			st2.push(cs);
		} else {
			switch (c)
			{
			case '+':
				a = st2.top(); st2.pop();
				b = st2.top(); st2.pop();
				st2.push("(" + b + "+" + a + ")");
				break;
			case '-':
				a = st2.top(); st2.pop();
				b = st2.top(); st2.pop();
				st2.push("(" + b + "-" + a + ")");
				break;
			case '*':
				a = st2.top(); st2.pop();
				b = st2.top(); st2.pop();
				st2.push("(" + b + "*" + a + ")");
				break;
			}
		}
	}

	return st2.top();
}

int main()
{
	while (getline(cin, inp))
	{
		number = del_space(inp);
		if (number == "0000") break;
		created_num = "00000000";
		if (make_rpn(0, 0, true))
		{
			//cout << created_num << endl;
			cout << get_tyuuchi() << endl;
		} else {
			cout << 0 << endl;
		}
	}

	return 0;
}