#include <stdio.h>
#include <stdlib.h>
#define N 9

char            ops[] = "+-*/";

void
nToExpr(int n, int *v, char *op)
{
  int             i;
  for (i = 0; i < N; i++) {
    v[i] = i + 1;
    op[i] = ops[n % 4];
    n /= 4;
  }
  op[N - 1] = '=';
}

void
pp(int *v, char *op)
{
  int             i;
  for (i = 0; i < N; i++)
    printf("%d%c ", v[i], op[i]);
  putchar('\n');
}

int
calc(int *v, char *op)
{
  int             r, i, t, flg;
  char            w[10];
  /* 空白処理 */

  /*   for (i = N - 1; i >= 0; i--) { */
  /*     if (op[i] == ' ') { */
  /*       sprintf(w, "%d%d", v[i], v[i + 1]); */
  /*       v[i] = atoi(w); */
  /*       op[i] = '+'; */
  /*       v[i + 1] = 0; */
  /*     } */
  /*   } */

  /* '-'を'+'に書き換え */
  for(i=0; i<N; i++) {
    if(op[i]=='-') {
      v[i+1]=-v[i+1];
      op[i]='+';
    }
  }

  /* '/'と'*'とを 入れ替 */
  do {
    flg = 0;
    for (i = 0; i < N - 1; i++) {
      if ((op[i] == '/') && (op[i + 1] == '*')) {
        flg = 1;
        op[i] = '*';
        op[i + 1] = '/';
        t = v[i + 1];
        v[i + 1] = v[i + 2];
        v[i + 2] = t;
      }
    }
  } while (flg);

  /* '*'、'/'を先に計算 */
  for (i = 0; i < N - 1; i++) {
    switch (op[i]) {
    case '*':
      v[i+1]*=v[i];
      v[i]=0;
      op[i]='+';
      break;
    case '/':
      v[i+1]=v[i]/v[i+1];
      v[i]=0;
      op[i]='+';
      break;
    default:
      break;
    }
  }

  r=v[0];
  for (i = 0; i < N - 1; i++) {
    r+=v[i+1];
  }

  return r;
}


int
main()
{
  int             v[N], i, n;
  char            op[N];

  n = 1;
  i = sizeof(op) - 1;
  while (i--)
    n *= sizeof(ops) - 1;

  while (n--) {
    nToExpr(n, v, op);

    /*     pp(v, op); */
    /*     printf("%d\n",calc(v, op)); */

    if(calc(v, op)==100) {
      nToExpr(n, v, op);
      pp(v,op);
    }

  }

  return 0;
}