#include <bits/stdc++.h>
using ll = long long;
using ld = long double;
using ull = unsigned long long;
using namespace std;
string s;
const int N = 1e6 + 1, mod = 1e9 + 7;
int pw[N], has[N], x, y, z;
void check(int i1, int i2) {
  if (i1 < 1 || i1 >= i2) return;
  if (s[1] == '0' && i1 > 1) return;
  if (s[i1 + 1] == '0' && i2 - i1 > 1) return;
  x = has[i1];
  y = has[i2] - has[i1] * 1ll * pw[i2 - i1] % mod;
  if (y < 0) y += mod;
  if ((x + y) % mod == z) {
    cout << s.substr(1, i1) + '+' + s.substr(i1 + 1, i2 - i1) + '=' +
                s.substr(i2 + 1);
    exit(0);
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> s;
  int n = ((int)(s).size());
  s = '0' + s;
  pw[0] = 1;
  for (int i = (1); i <= (n); ++i) pw[i] = pw[i - 1] * 1ll * 10 % mod;
  for (int i = (1); i <= (n); ++i)
    has[i] = (has[i - 1] * 1ll * 10 + s[i] - '0') % mod;
  for (int i = (1); i <= (n - 1); ++i) {
    int len = n - i;
    if (s[i + 1] == '0' && len > 1) continue;
    z = has[n] - has[i] * 1ll * pw[len] % mod;
    if (z < 0) z += mod;
    check(len, i);
    check(len - 1, i);
    check(i - len, i);
    check(i - len + 1, i);
  }
  return 0;
}
