#include <bits/stdc++.h>
using namespace std;
long long bigmod(long long b, long long p, long long m) {
  if (p == 0) return 1;
  long long my = bigmod(b, p / 2, m);
  my *= my;
  my %= m;
  if (p & 1) my *= b, my %= m;
  return my;
}
long long setb(long long n, long long pos) { return n = n | (1 << pos); }
long long resb(long long n, long long pos) { return n = n & ~(1 << pos); }
bool checkb(long long n, long long pos) { return (bool)(n & (1 << pos)); }
int ara[10];
void make(int x) {
  for (int i = 6; i >= 0; i--) ara[i] = x % 10, x /= 10;
}
int go(int x) {
  int ret = 0;
  while (x) {
    ret += (x % 10);
    x /= 10;
  }
  return ret;
}
vector<int> v, act;
int mn, keep;
bool pr[9000005];
int val[9000005];
bool obostha[9000005][7];
bool tmp[7];
bool sit[7];
void F(int pos, int car, int sum) {
  if (mn < 10) return;
  if (pos == 7) {
    int my = go(sum + car);
    mn = min(mn, my);
    if (mn == my) {
      for (int i = 0; i < 7; i++) tmp[i] = sit[i];
      keep = sum + car;
    }
    return;
  }
  sit[pos] = 1;
  F(pos + 1, ara[pos], sum + car);
  sit[pos] = 0;
  F(pos + 1, 10 * car + ara[pos], sum);
}
bool pls[200005];
char str[200005];
int n;
int get_rand() {
  long long ret = rand() * rand();
  return ret % n;
}
int fuck() {
  int ret = 0;
  for (int i = 0; i < n; i++) {
    int l = i;
    int tot = str[i] - '0';
    for (int j = i + 1; j < n; j++) {
      if (pls[j]) break;
      tot *= 10;
      tot += (str[j] - '0');
      l = j;
    }
    ret += tot;
    i = l;
  }
  return ret;
}
void solve(int second) {
  pls[0] = 0;
  for (int i = 0; i < n; i++) {
    if (pls[i]) printf("+");
    printf("%c", str[i]);
  }
  printf("\n");
  make(second);
  int flag = 0;
  for (int i = 0; i < 7; i++) {
    if (flag && obostha[second][i]) printf("+");
    if (ara[i] == 0) {
      if (flag)
        printf("%d", ara[i]);
      else
        continue;
    } else {
      printf("%d", ara[i]);
      flag = 1;
    }
  }
  printf("\n");
  int third = val[second];
  make(third);
  flag = 0;
  for (int i = 0; i < 7; i++) {
    if (flag && i) printf("+");
    if (ara[i] == 0) {
      if (flag)
        printf("%d", ara[i]);
      else
        continue;
    } else {
      printf("%d", ara[i]);
      flag = 1;
    }
  }
  printf("\n");
}
int main() {
  srand(786);
  for (int i = 0; i <= 500000 * 9; i++) {
    make(i);
    mn = 10;
    F(0, 0, 0);
    if (mn > 9) pr[i] = 1;
    val[i] = keep;
    for (int j = 0; j < 7; j++) obostha[i][j] = tmp[j];
  }
  scanf("%d", &n);
  scanf("%s", str);
  while (1) {
    for (int i = 1; i < n; i++) pls[i] = 1;
    int cnt = rand() % 2000;
    while (cnt--) {
      int idx = get_rand();
      pls[idx] = 1 - pls[idx];
    }
    int my = fuck();
    if (pr[my] == 0) {
      solve(my);
      return 0;
    }
  }
  return 0;
}
