#include <bits/stdc++.h>
using namespace std;
const int mod1 = 1000000000 + 7;
string s;
long long h[1000500];
long long inv10[1000500];
long long pow2(int n, int p, int m) {
  int x = 1;
  while (p) {
    if (p & 1) {
      x = (1LL * x * n) % m;
    }
    p >>= 1;
    n = (1LL * n * n) % m;
  }
  return x;
}
int main() {
  cin >> s;
  int n = s.size();
  long long pow10 = 1;
  int j = 0;
  for (int i = n - 1; i >= 0; --i) {
    h[i + 1] = (h[i + 2] + 1LL * pow10 * (s[i] - '0')) % mod1;
    inv10[j++] = pow2(pow10, mod1 - 2, mod1);
    pow10 = (pow10 * 10) % mod1;
  }
  bool sol = 0;
  for (int i = 1; i <= n / 2 && !sol; ++i) {
    int cur = n - i;
    for (int j = (cur / 2) - 1; j <= cur / 2 + 1 && !sol; ++j) {
      if (s[i] == '0' && j > 1) {
        continue;
      }
      if (s[i + j] == '0' && (n - i - j) > 1) {
        continue;
      }
      int a = (1LL * (h[1] - h[i + 1] + mod1) * inv10[n - i]) % mod1;
      int b =
          (1LL * (h[i + 1] - h[i + j + 1] + mod1) * inv10[n - (i + j)]) % mod1;
      int c = h[i + j + 1];
      if ((a + b) % mod1 == c) {
        sol = 1;
        cout << s.substr(0, i) << "+" << s.substr(i, j) << "="
             << s.substr(i + j) << "\n";
      }
    }
    if (3 * i < n) continue;
    for (int j = n - 2 * i - 1; j <= n - 2 * i + 1 && !sol; ++j) {
      if (s[i] == '0' && j > 1) {
        continue;
      }
      if (s[i + j] == '0' && (n - i - j) > 1) {
        continue;
      }
      int a = (1LL * (h[1] - h[i + 1] + mod1) * inv10[n - i]) % mod1;
      int b =
          (1LL * (h[i + 1] - h[i + j + 1] + mod1) * inv10[n - (i + j)]) % mod1;
      int c = h[i + j + 1];
      if ((a + b) % mod1 == c) {
        sol = 1;
        cout << s.substr(0, i) << "+" << s.substr(i, j) << "="
             << s.substr(i + j) << "\n";
      }
    }
  }
  return 0;
}
