#include <bits/stdc++.h>
using namespace std;
const int N = 200005, INF = 0x3f3f3f3f;
const long long P = 1e9 + 7;
template <typename T>
inline void read(T& first, int f = 1, char s = getchar()) {
  for (first = 0; s > '9' || s < '0'; s = getchar())
    if (s == '-') f = -1;
  while (s <= '9' && s >= '0') first = first * 10 + s - '0', s = getchar();
  first *= f;
}
int s[N];
int n;
void out3(long long first) {
  if (first < 10)
    cout << first << endl;
  else
    cout << ((first / 10) % 10) << "+" << (first % 10) << endl;
}
void out2(long long first) {
  int a[50], cnt = 0, fuck = 0;
  while (first) {
    fuck += first % 10;
    a[cnt++] = first % 10;
    first /= 10;
  }
  while (cnt--) {
    cout << a[cnt];
    if (cnt) cout << "+";
  }
  cout << endl;
  out3(fuck);
}
bool f(long long first) {
  int fuck = 0;
  while (first) {
    fuck += first % 10;
    first /= 10;
  }
  if (fuck > 99) return 0;
  if (fuck % 10 + (fuck / 10) % 10 > 9) return 0;
  return 1;
}
bool Try() {
  long long ret = 0, now = 0;
  vector<int> p;
  for (int i = (int)(1); i <= (int)(n); ++i) {
    now = now * 10 + s[i];
    if (i == n)
      ret += now;
    else {
      if (rand() % 11 == 0) continue;
      ret += now;
      now = 0;
      p.push_back(i);
    }
  }
  bool flag = f(ret);
  if (!flag) return 0;
  int cnt = 0;
  ret = 0, now = 0;
  for (int i = (int)(1); i <= (int)(n); ++i) {
    putchar('0' + s[i]);
    now = now * 10 + s[i];
    if (i == n)
      ret += now;
    else if (cnt != p.size() && p[cnt] == i) {
      ret += now;
      now = 0;
      putchar('+'), cnt++;
    }
  }
  cout << endl;
  out2(ret);
  return 1;
}
int main() {
  srand(time(0));
  cin >> n;
  getchar();
  for (int i = (int)(1); i <= (int)(n); ++i) {
    s[i] = getchar() - '0';
  }
  while (!Try())
    ;
  return 0;
}
