#include<bits/stdc++.h>
#define rep(i,n)for(int i=0;i<n;i++)
using namespace std;

char dir[]{ '+','-','*' };

int calc(int a, int b, char c) {
	switch (c) {
	case '+':return a + b;
	case '-':return a - b;
	case '*':return a*b;
	}
}
bool solve(int a, int b, int c, int d, char c1, char c2, char c3) {
	int i = calc(a, b, c1); int j = calc(i, c, c2); int k = calc(j, d, c3);
	if (k == 10) {
		printf("((%d %c %d) %c %d) %c %d\n", a, c1, b, c2, c, c3, d);
		return true;
	}
	i = calc(b, c, c2); j = calc(a, i, c1); k = calc(j, d, c3);
	if (k == 10) {
		printf("(%d %c (%d %c %d)) %c %d\n", a, c1, b, c2, c, c3, d);
		return true;
	}
	i = calc(c, d, c3); j = calc(a, b, c1); k = calc(j, i, c2);
	if (k == 10) {
		printf("(%d %c %d) %c (%d %c %d)\n", a, c1, b, c2, c, c3, d);
		return true;
	}
	i = calc(b, c, c2); j = calc(i, d, c3); k = calc(a, j, c1);
	if (k == 10) {
		printf("%d %c ((%d %c %d) %c %d)\n", a, c1, b, c2, c, c3, d);
		return true;
	}
	i = calc(c, d, c3); j = calc(b, i, c2); k = calc(a, j, c1);
	if (k == 10) {
		printf("%d %c (%d %c (%d %c %d))\n", a, c1, b, c2, c, c3, d);
		return true;
	}
	return false;
}
int main() {
	int a[4];
	while (1) {
		rep(i, 4)scanf("%d", &a[i]);
		if (!a[0])break;
		do {
			rep(i, 3)rep(j, 3)rep(k, 3) {
				if (solve(a[0], a[1], a[2], a[3], dir[i], dir[j], dir[k]))
					goto g;
			}
		} while (next_permutation(a, a + 4));
		puts("0");
	g:;
	}
}