#include <bits/stdc++.h>
using namespace std;
string s;
long long hash1[1000010], hash2[1000010], calc1[1000010], calc2[1000010];
long long val;
inline bool check(long long x, long long y, long long i) {
  if (x == 0 || y == 0) return false;
  if ((x == 1 || s[0] != '0') && (y == 1 || s[x] != '0')) {
    long long fir1 = hash1[x];
    long long sec1 =
        (hash1[i + 1] - (hash1[x] * calc1[i + 1 - x]) % 100000193 + 100000193);
    if (sec1 >= 100000193) {
      while (sec1 >= 100000193) {
        sec1 -= 100000193;
      }
    }
    long long ans1 =
        (hash1[s.size()] -
         (hash1[i + 1] * calc1[s.size() - i - 1]) % 100000193 + 100000193);
    if (ans1 >= 100000193) {
      while (ans1 >= 100000193) {
        ans1 -= 100000193;
      }
    }
    long long fir2 = hash2[x];
    long long sec2 =
        (hash2[i + 1] - (hash2[x] * calc2[i + 1 - x]) % 99999773 + 99999773);
    if (sec2 >= 99999773) {
      while (sec2 >= 99999773) {
        sec2 -= 99999773;
      }
    }
    long long ans2 =
        (hash2[s.size()] - (hash2[i + 1] * calc2[s.size() - i - 1]) % 99999773 +
         99999773);
    if (ans2 >= 99999773) {
      while (ans2 >= 99999773) {
        ans2 -= 99999773;
      }
    }
    long long ww1 = fir1 + sec1;
    while (ww1 >= 100000193) ww1 -= 100000193;
    long long ww2 = fir2 + sec2;
    while (ww2 >= 99999773) ww2 -= 99999773;
    if (ww1 == ans1 && ww2 == ans2) {
      cout << s.substr(0, x) << '+' << s.substr(x, y) << '=' << s.substr(x + y)
           << endl;
      return true;
    }
  }
  return false;
}
signed main() {
  ios::sync_with_stdio(false);
  cin >> s;
  calc1[0] = 1;
  for (long long i = 1; i <= 1000005; i++) {
    calc1[i] = calc1[i - 1] * 10;
    if (calc1[i] >= 100000193) {
      while (calc1[i] >= 100000193) {
        calc1[i] -= 100000193;
      }
    }
  }
  calc2[0] = 1;
  for (long long i = 1; i <= 1000005; i++) {
    calc2[i] = calc2[i - 1] * 10;
    if (calc2[i] >= 99999773) {
      while (calc2[i] >= 99999773) {
        calc2[i] -= 99999773;
      }
    }
  }
  for (long long i = 0; i < s.size(); i++) {
    hash1[i + 1] = hash1[i] * 10 + s[i] - '0';
    if (hash1[i + 1] >= 100000193) {
      while (hash1[i + 1] >= 100000193) {
        hash1[i + 1] -= 100000193;
      }
    }
  }
  for (long long i = 0; i < s.size(); i++) {
    hash2[i + 1] = hash2[i] * 10 + s[i] - '0';
    if (hash2[i + 1] >= 99999773) {
      while (hash2[i + 1] >= 99999773) {
        hash2[i + 1] -= 99999773;
      }
    }
  }
  if (s.size() % 2 == 0)
    val = s.size() / 2 - 1;
  else
    val = s.size() / 2;
  for (long long ii = val; ii < s.size() - 1; ii++) {
    long long lenf = ii + 1;
    long long lenr = s.size() - lenf;
    if (lenf < lenr) {
      continue;
    } else if (lenf > lenr * 2) {
      continue;
    } else {
      if (check(lenr, lenf - lenr, ii)) break;
      if (check(lenf - lenr, lenr, ii)) break;
      if (check(lenr - 1, lenf - lenr + 1, ii)) break;
      if (check(lenf - lenr + 1, lenr - 1, ii)) break;
    }
  }
  return 0;
}
