#include <bits/stdc++.h>
using namespace std;
char buffer[2000020], *p1, *p2;
template <class T>
void read(T& x) {
  char ch = ((p1 == p2 &&
              (p2 = (p1 = buffer) + fread(buffer, 1, 2000020, stdin), p1 == p2))
                 ? EOF
                 : *p1++);
  x = 0;
  bool f = 1;
  while (!('0' <= ch && ch <= '9') && ch != '-')
    ch = ((p1 == p2 &&
           (p2 = (p1 = buffer) + fread(buffer, 1, 2000020, stdin), p1 == p2))
              ? EOF
              : *p1++);
  if (ch == '-')
    f = 0,
    ch = ((p1 == p2 &&
           (p2 = (p1 = buffer) + fread(buffer, 1, 2000020, stdin), p1 == p2))
              ? EOF
              : *p1++);
  while ('0' <= ch && ch <= '9')
    x = (x << 1) + (x << 3) + ch - '0',
    ch = ((p1 == p2 &&
           (p2 = (p1 = buffer) + fread(buffer, 1, 2000020, stdin), p1 == p2))
              ? EOF
              : *p1++);
  x = (f) ? x : -x;
}
int _num[20];
template <class T>
void write(T x, char sep = '\n') {
  if (!x) {
    putchar('0'), putchar(sep);
    return;
  }
  if (x < 0) putchar('-'), x = -x;
  int c = 0;
  while (x) _num[++c] = x % 10, x /= 10;
  while (c) putchar('0' + _num[c--]);
  putchar(sep);
}
char s[2000020];
int n;
int pre[2][2000020], M[] = {19260817, 998244353}, mi[2][2000020];
int gethash(int l, int r, int op) {
  return (pre[op][r] - 1ll * pre[op][l - 1] * mi[op][r - l + 1] % M[op] +
          M[op]) %
         M[op];
}
bool judge(int a, int b, int c) {
  if (a <= 0 || b <= 0 || c <= 0) return false;
  if ((a > 1 && s[1] == '0') || (b > 1 && s[a + 1] == '0') ||
      (c > 1 && s[a + b + 1] == '0'))
    return false;
  for (register int i = 0; i < 2; i++) {
    if ((gethash(1, a, i) + gethash(a + 1, a + b, i)) % M[i] !=
        gethash(a + b + 1, n, i))
      return false;
  }
  for (register int i = 1; i <= a; i++) printf("%c", s[i]);
  printf("+");
  for (register int i = 1; i <= b; i++) printf("%c", s[a + i]);
  printf("=");
  for (register int i = 1; i <= c; i++) printf("%c", s[a + b + i]);
  return true;
}
int main() {
  scanf("%s", s + 1);
  n = strlen(s + 1);
  for (register int i = 0; i < 2; i++) mi[i][0] = 1;
  for (register int i = 1; i <= n; i++) {
    for (register int j = 0; j < 2; j++)
      pre[j][i] = 1ll * pre[j][i - 1] * 10 % M[j] + s[i] - '0',
      (pre[j][i] = (pre[j][i] >= M[j]) ? (pre[j][i] - M[j]) : pre[j][i]);
    for (register int j = 0; j < 2; j++)
      mi[j][i] = 1ll * mi[j][i - 1] * 10 % M[j];
  }
  int l = 1;
  bool f = 0;
  for (register int i = n; i >= 3; i--) {
    if (l > n - l) assert(false);
    if (judge(l - 1, n - 2 * l + 1, l) || judge(l, n - 2 * l, l) ||
        judge(n - 2 * l + 1, l - 1, l) || judge(n - 2 * l, l, l))
      return 0;
    l++;
  }
  return 0;
}
