#include <cstdio>
#include <algorithm>
#include <string>
using namespace std;
int calc(int a, int b, int op)
{
	switch (op) {
		case 0: return a + b;
		case 1: return a - b;
		case 2: return a * b;
	}
	return -1;
}
char itoc(int x)
{
	switch (x) {
		case 0: return '+';
		case 1: return '-';
		case 2: return '*';
	}
	return 0;
}
int main()
{
	int a[4];
	while (true) {
		for (int i=0; i<4; ++i) scanf("%d", a+i);
		if (!a[0]) break;
		sort(a, a+4);
		bool found = false;
		do {
			for (int i=0; i<27; ++i) {
				int o1 = i / 9;
				int o2 = i % 9 / 3;
				int o3 = i % 3;
				int ans = calc(calc(calc(a[0], a[1], o1), a[2], o2), a[3], o3);
				if (ans == 10) {
					printf("((%d %c %d) %c %d) %c %d\n",
						a[0], itoc(o1), a[1], itoc(o2),
						a[2], itoc(o3), a[3]);
					found = true;
					break;
				}

				ans = calc(calc(a[0], a[1], o1), calc(a[2], a[3], o2), o3);
				if (ans == 10) {
					printf("(%d %c %d) %c (%d %c %d)\n",
						a[0], itoc(o1), a[1], itoc(o2),
						a[2], itoc(o3), a[3]);
					found = true;
					break;
				}

				ans = calc(a[0], calc(a[1], calc(a[2], a[3], o3), o2), o1);
				if (ans == 10) {
					printf("%d %c (%d %c (%d %c %d))\n",
						a[0], itoc(o1), a[1], itoc(o2),
						a[2], itoc(o3), a[3]);
					found = true;
					break;
				}
			}
		} while (!found && next_permutation(a, a+4));
		if (!found) puts("0");
	}
	return 0;
}