#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
const int mod = 1e9 + 7;
int n;
long long hsh[N], pwr[N];
char x[N];
long long get(int l, int r) {
  return ((hsh[r] - hsh[l - 1] * pwr[r - l + 1] % mod + mod) % mod);
}
void print(int a, int b) {
  for (auto i = 1; i <= (long long)(a); i++) cout << x[i];
  cout << "+";
  for (auto i = a + 1; i <= (long long)(b); i++) cout << x[i];
  cout << "=";
  for (auto i = b + 1; i <= (long long)(n); i++) cout << x[i];
  exit(0);
}
bool check(int i, int j) {
  if (i >= j) return false;
  if (j - i != 1 && x[i + 1] == '0') return false;
  if (n - j != 1 && x[j + 1] == '0') return false;
  return true;
}
bool hoba(int a, int b) { return fabs(a - b) <= 1; }
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  string y;
  cin >> y;
  n = ((int)((y).size()));
  for (auto i = 1; i <= (long long)(n); i++) x[i] = y[i - 1];
  pwr[0] = 1;
  for (auto i = 1; i <= (long long)(n); i++) {
    hsh[i] = (hsh[i - 1] * 10 + (x[i] - '0')) % mod;
    pwr[i] = (pwr[i - 1] * 10) % mod;
  }
  for (auto i = 1; i < (long long)(n - 1); i++) {
    int idx = i + i, rem = n - idx;
    if (hoba(n - idx, max(i, idx - i)) && n - idx == i && check(i, idx))
      if ((get(1, i) + get(i + 1, idx)) % mod == get(idx + 1, n)) print(i, idx);
    rem = n - 2 * i;
    idx = i + rem;
    if (hoba(n - idx, max(i, idx - i)) && rem <= i && check(i, idx)) {
      if ((get(1, i) + get(i + 1, idx)) % mod == get(idx + 1, n)) print(i, idx);
    }
    rem = (n - i) / 2;
    idx = i + rem - 1;
    if (hoba(n - idx, max(i, idx - i)) && check(i, idx)) {
      if ((get(1, i) + get(i + 1, idx)) % mod == get(idx + 1, n)) print(i, idx);
    }
    idx++;
    if (hoba(n - idx, max(i, idx - i)) && check(i, idx)) {
      if ((get(1, i) + get(i + 1, idx)) % mod == get(idx + 1, n)) print(i, idx);
    }
    idx++;
    if (hoba(n - idx, max(i, idx - i)) && check(i, idx)) {
      if ((get(1, i) + get(i + 1, idx)) % mod == get(idx + 1, n)) print(i, idx);
    }
    idx++;
  }
  return 0;
}
