#include <bits/stdc++.h>
using namespace std;
std::mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
ostream &operator<<(ostream &out, vector<int> &v) {
  for (auto a : v) out << a << " ";
  out << endl;
}
int main() {
  for (int tc = 1; tc <= 1; tc++) {
    int n;
    cin >> n;
    string second;
    cin >> second;
    string original = second;
    long long int ans;
    string ans1, ans2, ans3;
    for (int trials = 0; trials < 500; trials++) {
      ans = 0;
      second = original;
      n = second.size();
      ans1 = "";
      ans2 = "";
      ans3 = "";
      for (int i = 0; i < n;) {
        int jj = rng() % ((2) - (1) + 1) + (1);
        int j;
        int res = 0;
        for (j = i; j < min(n, i + jj); j++) {
          ans1 += second[j];
          res *= 10;
          res += second[j] - '0';
        }
        ans += res;
        ans1 += '+';
        i = j;
      }
      second = to_string(ans);
      n = second.size();
      ans = 0;
      for (int i = 0; i < n;) {
        int jj = rng() % ((2) - (1) + 1) + (1);
        int j;
        int res = 0;
        for (j = i; j < min(n, i + jj); j++) {
          ans2 += second[j];
          res *= 10;
          res += second[j] - '0';
        }
        ans2 += '+';
        ans += res;
        i = j;
      }
      second = to_string(ans);
      n = second.size();
      ans = 0;
      for (int i = 0; i < n;) {
        int jj = rng() % ((2) - (1) + 1) + (1);
        int j;
        int res = 0;
        for (j = i; j < min(n, i + jj); j++) {
          ans3 += second[j];
          res *= 10;
          res += second[j] - '0';
        }
        ans += res;
        ans3 += '+';
        i = j;
      }
      second = to_string(ans);
      n = second.size();
      if (second.size() == 1) {
        ans1.erase(--ans1.end());
        ans2.erase(--ans2.end());
        ans3.erase(--ans3.end());
        cout << ans1 << endl << ans2 << endl << ans3 << endl;
        break;
      }
    }
  }
}
