#include <bits/stdc++.h>
const int MOD[2] = {(int)(1e9 + 7), 19260817};
long long Pow(long long x, int a, long long mod) {
  long long res = 1;
  while (a) {
    if (a & 1) res = res * x % mod;
    x = x * x % mod;
    a >>= 1;
  }
  return res;
}
char s[1000005];
int Hash[1000005][2];
int len;
int calc(int l, int r, int d) {
  int p = r - l + 1;
  return (Hash[r][d] -
          (long long)Hash[l - 1][d] * Pow(10, p, MOD[d]) % MOD[d]) %
         MOD[d];
}
bool check(int p, int t) {
  if (p > t) return false;
  if (s[1] == '0' && p != 1 + 1) return false;
  if (s[p] == '0' && t != p + 1) return false;
  if (s[t] == '0' && len != t) return false;
  return ((long long)calc(1, p - 1, 0) + calc(p, t - 1, 0) - calc(t, len, 0)) %
                 MOD[0] ==
             0 &&
         ((long long)calc(1, p - 1, 1) + calc(p, t - 1, 1) - calc(t, len, 1)) %
                 MOD[1] ==
             0;
}
void output(int p, int t) {
  for (int i = 1; i <= len; ++i) {
    if (p == i) putchar('+');
    if (t == i) putchar('=');
    putchar(s[i]);
  }
  putchar(10);
}
int main() {
  scanf("%s", s + 1);
  len = strlen(s + 1);
  for (int i = 1; i <= len; ++i) {
    Hash[i][0] = (Hash[i - 1][0] * 10LL + s[i] - '0') % MOD[0];
    Hash[i][1] = (Hash[i - 1][1] * 10LL + s[i] - '0') % MOD[1];
  }
  for (int i = 1; i + i <= len; ++i) {
    if (check(i + 1, len - i + 1)) {
      output(i + 1, len - i + 1);
      break;
    }
    if (check(i + 1, len - i)) {
      output(i + 1, len - i);
      break;
    }
    if (check(len - i - i + 1, len - i + 1)) {
      output(len - i - i + 1, len - i + 1);
      break;
    }
    if (check(len - i - i, len - i)) {
      output(len - i - i, len - i);
      break;
    }
  }
  return 0;
}
