#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <complex>
using namespace std;

#define REP(i,n) for(int i=0;i<(int)n;++i)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define ALL(c) (c).begin(), (c).end()

int sum(int a, int b)
{
  return a + b;
}
int sub(int a, int b)
{
  return a - b;
}
int mul(int a, int b)
{
  return a * b;
}

int go(int a, int b, int c, int d)
{
  int  (*cal[])(int, int) = {sum, sub, mul};
  char op[] = {'+', '-', '*'};
  REP(i,3) {
    REP(j,3) {
      REP(k,3) {
        if (cal[k](cal[j](cal[i](a,b), c), d) == 10) {     // (((a . b) . c) . d)
          printf("(((%d %c %d) %c %d) %c %d)\n", a,op[i],b,op[j],c,op[k],d);
          return 1;
        } else if (cal[j](cal[i](a,b), cal[k](c,d)) == 10) {            // ((a . b) . (c . d))
          printf("((%d %c %d) %c (%d %c %d))\n", a,op[i],b,op[j],c,op[k],d);
          return 1;
        } else if (cal[k](cal[i](a,cal[j](b, c)), d) == 10) {
          printf("((%d %c (%d %c %d)) %c %d)\n", a,op[i],b,op[j],c,op[k],d);
          return 1;
        } else if (cal[i](a, cal[k](cal[j](b, c), d)) == 10) {
          printf("(%d %c ((%d %c %d) %c %d))\n", a,op[i],b,op[j],c,op[k],d);
          return 1;
        } else if (cal[i](a, cal[j](b, cal[k](c, d))) == 10) {
          printf("(%d %c (%d %c (%d %c %d)))\n", a,op[i],b,op[j],c,op[k],d);
          return 1;
        }
      }
    }
  }
  return 0;
}


int main() {
  int a[4];
  while (cin>>a[0]>>a[1]>>a[2]>>a[3],a[0]+a[1]+a[2]+a[3]) {
    int f = 0;
    do {
      if (go(a[0],a[1],a[2],a[3]) == 1) {
        f = 1;
        break;
      }
    } while(next_permutation(a,a+4));
    if (f == 0)
      cout << 0 << endl;
  }
}