#include <bits/stdc++.h>
using namespace std;
inline void read(int &x) {
  char ch;
  bool flag = false;
  for (ch = getchar(); !isdigit(ch); ch = getchar())
    if (ch == '-') flag = true;
  for (x = 0; isdigit(ch); x = x * 10 + ch - '0', ch = getchar())
    ;
  x = flag ? -x : x;
}
inline void read(long long &x) {
  char ch;
  bool flag = false;
  for (ch = getchar(); !isdigit(ch); ch = getchar())
    if (ch == '-') flag = true;
  for (x = 0; isdigit(ch); x = x * 10 + ch - '0', ch = getchar())
    ;
  x = flag ? -x : x;
}
inline void write(int x) {
  static const int maxlen = 100;
  static char s[maxlen];
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  if (!x) {
    putchar('0');
    return;
  }
  int len = 0;
  for (; x; x /= 10) s[len++] = x % 10 + '0';
  for (int i = len - 1; i >= 0; --i) putchar(s[i]);
}
const int MAXN = 310000;
int n;
char s[MAXN];
void ds(int x) {
  sprintf(s, "%d", x);
  printf("%c", s[0]);
  x = s[0] - '0';
  for (int i = 1; s[i]; i++) {
    x += s[i] - '0';
    printf("+%c", s[i]);
  }
  puts("");
  sprintf(s, "%d", x);
  printf("%c", s[0]);
  x = s[0] - '0';
  for (int i = 1; s[i]; i++) {
    x += s[i] - '0';
    printf("+%c", s[i]);
  }
  puts("");
}
void doit2(int l, int lim, int cnt, bool flag) {
  int tot = 0;
  for (int i = l; (i + 1) < n; i += 2) tot += (s[i] - '0') * 9;
  if (tot + cnt < lim) {
    if (flag) printf("+");
    printf("%c", s[l]);
    flag = 1;
    l++;
  }
  for (int i = l; (i + 1) < n; i += 2) {
    if (flag) printf("+");
    flag = 1;
    printf("%c%c", s[i], s[i + 1]);
    cnt += (s[i] - '0') * 9;
    if (cnt >= lim) {
      for (int j = i + 2; j < n; j++) printf("+%c", s[j]);
      puts("");
      ds(cnt);
      return;
    }
  }
}
bool test1(int l, int cnt, int lim) {
  int tot = 0;
  for (int i = l; (i + 2) < n; i += 3)
    tot += (s[i] - '0') * 99 + (s[i + 1] - '0') * 9;
  if (tot + cnt >= lim) {
    bool flag = 0;
    if (l == 1) {
      printf("%c", s[0]);
      flag = 1;
    }
    if (l == 2) {
      printf("%c%c", s[0], s[1]);
      flag = 1;
    }
    for (int i = l; (i + 2) < n; i += 3) {
      if (cnt + 999 >= lim) {
        doit2(i, lim, cnt, flag);
        return 1;
      }
      cnt += (s[i] - '0') * 99 + (s[i + 1] - '0') * 9;
      if (flag) printf("+");
      flag = 1;
      printf("%c%c%c", s[i], s[i + 1], s[i + 2]);
    }
  }
  return 0;
}
void doit3(int cnt) {
  int lim = 1;
  while (lim <= cnt) lim = lim * 10;
  if (test1(0, cnt, lim)) return;
  if (test1(1, cnt, lim)) return;
  if (test1(2, cnt + (s[0] - '0') * 9, lim)) return;
}
int main() {
  read(n);
  scanf("%s", s);
  long long cnt = 0;
  n = strlen(s);
  for (int i = 0; i < n; i++) cnt += s[i] - '0';
  if (cnt <= 288) {
    printf("%c", s[0]);
    for (int i = 1; i < n; i++) printf("+%c", s[i]);
    puts("");
    if (cnt == 199) {
      printf("1+99\n");
      printf("1+0+0\n");
      return 0;
    }
    ds(cnt);
  } else if (cnt < 1000)
    doit2(0, 1000, cnt, 0);
  else
    doit3(cnt);
  return 0;
}
