#include <bits/stdc++.h>
using namespace std;
const long long N = 2e6 + 10, m = 3;
long long MOD[3] = {(long long)1e9 + 7, (long long)1e9 + 9, 98765431};
long long h[N][3];
long long t10[N][3];
string s;
long long n;
long long get(long long l, long long r, long long id) {
  long long ans = (h[r][id] - h[l][id] * t10[r - l][id]) % MOD[id];
  if (ans < 0) ans += MOD[id];
  return ans;
}
bool check(long long x, long long y, long long z) {
  if (z < min(x, y) || min({x, y, z}) <= 0) return 0;
  for (long long i = 0; i < m; i++) {
    long long v = get(0, x, i) + get(x, x + y, i) - get(x + y, x + y + z, i);
    if (v % MOD[i] != 0) return 0;
  }
  for (long long i = 0; i < n; i++) {
    cout << (char)(s[i] + '0');
    if (i == x - 1) cout << '+';
    if (i == x + y - 1) cout << '=';
  }
  cout << endl;
  exit(0);
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin >> s;
  n = s.size();
  for (long long i = 0; i < n; i++) s[i] -= '0';
  for (long long i = 1; i <= n; i++)
    for (long long j = 0; j < m; j++)
      h[i][j] = (h[i - 1][j] * 10 + s[i - 1]) % MOD[j];
  t10[0][0] = t10[0][1] = t10[0][2] = 1;
  for (long long i = 1; i < N; i++)
    for (long long j = 0; j < m; j++) t10[i][j] = 10 * t10[i - 1][j] % MOD[j];
  for (long long i = 1; i < n; i++) {
    check(n - 2 * i, i, i);
    check(n - 2 * i + 1, i - 1, i);
    check(i, n - 2 * i, i);
    check(i - 1, n - 2 * i + 1, i);
  }
  assert(0);
}
