#include <iostream>
#include <sstream>
#include <array>
#include <vector>
#include <cstdint>

class Number {
public:
	Number(std::int16_t n) : number(n) { }
	virtual std::int16_t operator()() const
	{ return number; }
	virtual std::string to_string() const
	{
		std::ostringstream ostrs;
		ostrs << number;
		return ostrs.str();
	}
private:
	std::int16_t number;
};

class Expression : public Number {
public:
	Expression(Number const* op1, char op, Number const* op2)
		: Number(0), operand1(op1), operand2(op2), op(op) { }
	virtual std::int16_t operator()() const
	{
		switch (op) {
			case '+': return (*operand1)() + (*operand2)();
			case '-': return (*operand1)() - (*operand2)();
			case '*': return (*operand1)() * (*operand2)();
		}
		return 0;
	}
	virtual std::string to_string() const
	{
		std::ostringstream oss;
		oss << "(" << operand1->to_string() << " " << op << " " << operand2->to_string() << ")";
		return oss.str();
	}

private:
	Number const* const operand1;
	Number const* const operand2;
	char const op;
};

typedef std::array<char, 3> OpArray;
typedef std::vector<Number const*> ExpVec;

bool expression(ExpVec& nums)
{
	if (nums.size() == 1) {
		if ((*nums.front())() == 10) {
			std::cout << (*nums.front()).to_string() << std::endl;
			return true;
		}
		return false;
	}

	for (std::size_t i = 0; i < nums.size(); ++i) {
		Number const* num1 = nums[i];
		nums.erase(begin(nums) + i);
		for (std::size_t j = i; j < nums.size(); ++j) {
			Number const* num2 = nums[j];
			nums.erase(begin(nums) + j);
			static OpArray const ops = {'+', '-', '*'};
			for (auto op : ops) {
				Expression exp(num1, op, num2);
				nums.push_back(&exp);
				if (expression(nums)) {
					return true;
				}
				nums.pop_back();
			}
			Expression exp(num2, '-', num1);
			nums.push_back(&exp);
			if (expression(nums)) {
				return true;
			}
			nums.pop_back();

			nums.insert(begin(nums) + j, num2);
		}
		nums.insert(begin(nums) + i, num1);
	}
	return false;
}

int main()
{
	std::int16_t a, b, c, d;
	for (std::cin >> a >> b >> c >> d;
		 not (a == 0 and b == 0 and c == 0 and d == 0);
		 std::cin >> a >> b >> c >> d) {
		Number num_a(a), num_b(b), num_c(c), num_d(d);
		ExpVec exp_vector;
		exp_vector.push_back(&num_a);
		exp_vector.push_back(&num_b);
		exp_vector.push_back(&num_c);
		exp_vector.push_back(&num_d);

		if (!expression(exp_vector)) {
			std::cout << 0 << std::endl;
		}
	}

	return 0;
}