#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long t = 0, f = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    c = getchar();
  }
  while (c >= '0' && c <= '9') t = t * 10 + c - 48, c = getchar();
  return t * f;
}
char s[10000001];
long long len, hsh[2000001][11], bas = 10;
long long mo[4] = {1000000007, 1000000009, 998244353, 1000000037};
inline long long ksm1(long long x, long long y, long long m) {
  long long sum = 1;
  for (; y; y /= 2) {
    if (y & 1) sum = sum * x % m;
    x = x * x % m;
  }
  return sum;
}
inline long long ksm(long long x, long long y) {
  long long sum = 1;
  for (; y; y /= 2) {
    if (y & 1) sum = sum * x;
    x = x * x;
  }
  return sum;
}
inline long long get(int l, int r, int k) {
  long long t = 0, ret = 0;
  if (k == 10)
    t = ksm(bas, r - l + 1), ret = hsh[r][10] - t * hsh[l - 1][10];
  else
    t = ksm1(bas, r - l + 1, mo[k]),
    ret = ((hsh[r][k] - t * hsh[l - 1][k]) % mo[k] + mo[k]) % mo[k];
  return ret;
}
int a1[2000001], a2[2000001], a3[2000001], a4[2000001], len1, len2, len3;
bool flag = 0;
inline void solve(int x) {
  int rest = len - x;
  for (long long l = rest / 2; l <= rest / 2 + 1; ++l) {
    if ((get(1, x, 10) + get(x + 1, len - l, 10)) ==
        get(len - l + 1, len, 10)) {
      flag = 1;
      for (long long i = 0; i <= 3; ++i)
        if (((get(1, x, i) + get(x + 1, len - l, i)) % mo[i] + mo[i]) % mo[i] !=
            get(len - l + 1, len, i)) {
          flag = 0;
          break;
        }
      if (!flag) continue;
      if (s[1] == '0' && x != 1) continue;
      if (s[x + 1] == '0' && len - l != x + 1) continue;
      if (s[len - l + 1] == '0' && len != len - l + 1) continue;
      for (long long i = 1; i <= x; ++i) putchar(s[i]);
      putchar('+');
      for (long long i = x + 1; i <= len - l; ++i) putchar(s[i]);
      putchar('=');
      for (long long i = len - l + 1; i <= len; ++i) putchar(s[i]);
      exit(0);
    }
  }
  for (long long l = x; l <= x + 1; ++l) {
    if ((get(1, x, 10) + get(x + 1, len - l, 10)) ==
        get(len - l + 1, len, 10)) {
      flag = 1;
      for (long long i = 0; i <= 3; ++i)
        if (((get(1, x, i) + get(x + 1, len - l, i)) % mo[i] + mo[i]) % mo[i] !=
            get(len - l + 1, len, i)) {
          flag = 0;
          break;
        }
      if (!flag) continue;
      if (s[1] == '0' && x != 1) continue;
      if (s[x + 1] == '0' && len - l != x + 1) continue;
      if (s[len - l + 1] == '0' && len != len - l + 1) continue;
      for (long long i = 1; i <= x; ++i) putchar(s[i]);
      putchar('+');
      for (long long i = x + 1; i <= len - l; ++i) putchar(s[i]);
      putchar('=');
      for (long long i = len - l + 1; i <= len; ++i) putchar(s[i]);
      exit(0);
    }
  }
}
int main() {
  scanf("%s", s + 1);
  len = strlen(s + 1);
  hsh[0][4] = 0;
  for (long long i = 1; i <= len; ++i)
    hsh[i][10] = hsh[i - 1][10] * bas + s[i] - 48;
  for (long long i = 1; i <= len; ++i)
    for (long long j = 0; j <= 3; ++j)
      hsh[i][j] = (hsh[i - 1][j] * bas + s[i] - 48) % mo[j];
  for (long long i = 1; i <= len / 2 + 1; ++i) solve(i);
}
