#include <bits/stdc++.h>
using namespace std;
void readi(int &x) {
  int v = 0, f = 1;
  char c = getchar();
  while (!isdigit(c) && c != '-') c = getchar();
  if (c == '-')
    f = -1;
  else
    v = v * 10 + c - '0';
  while (isdigit(c = getchar())) v = v * 10 + c - '0';
  x = v * f;
}
void readll(long long &x) {
  long long v = 0ll, f = 1ll;
  char c = getchar();
  while (!isdigit(c) && c != '-') c = getchar();
  if (c == '-')
    f = -1;
  else
    v = v * 10 + c - '0';
  while (isdigit(c = getchar())) v = v * 10 + c - '0';
  x = v * f;
}
void readc(char &x) {
  char c;
  while ((c = getchar()) == ' ')
    ;
  x = c;
}
void writes(string s) { puts(s.c_str()); }
void writeln() { writes(""); }
void writei(int x) {
  if (!x) putchar('0');
  char a[25];
  int top = 0;
  while (x) {
    a[++top] = (x % 10) + '0';
    x /= 10;
  }
  while (top) {
    putchar(a[top]);
    top--;
  }
}
void writell(long long x) {
  if (!x) putchar('0');
  char a[25];
  int top = 0;
  while (x) {
    a[++top] = (x % 10) + '0';
    x /= 10;
  }
  while (top) {
    putchar(a[top]);
    top--;
  }
}
long long qp(long long x, long long y) {
  if (y == 0) return 1;
  if (y == 1) return x;
  long long z = qp(x, y / 2);
  z = z * z % 1000000007;
  if (y & 1) z = z * x % 1000000007;
  return z;
}
long long h[1000005][2], e = 10, wyx[2] = {1000000007, 1000000009},
                         p[1000005][2], n, i, j;
string s;
int l1, l2, l3, t;
long long gh(int x, int y, int c) {
  return ((h[y][c] - h[x - 1][c] * p[y - x + 1][c] % wyx[c]) % wyx[c] +
          wyx[c]) %
         wyx[c];
}
bool check(int l1, int l2, int l3) {
  if (l1 < 1 || l2 < 1 || l3 < 1) return 0;
  if (s[1] == '0' && l1 - 1) return 0;
  if (s[1 + l1] == '0' && l2 - 1) return 0;
  if (s[1 + l1 + l2] == '0' && l3 - 1) return 0;
  return ((gh(1, l1, 0) + gh(l1 + 1, l1 + l2, 0)) % wyx[0] ==
          gh(l1 + l2 + 1, l1 + l2 + l3, 0)) &&
         ((gh(1, l1, 1) + gh(l1 + 1, l1 + l2, 1)) % wyx[1] ==
          gh(l1 + l2 + 1, l1 + l2 + l3, 1));
}
int main() {
  cin >> s;
  s = " " + s;
  p[0][0] = p[0][1] = 1;
  for (i = 1; i < s.size(); i++) {
    p[i][0] = p[i - 1][0] * e % wyx[0];
    p[i][1] = p[i - 1][1] * e % wyx[1];
    h[i][0] = (h[i - 1][0] * e + s[i] - '0') % wyx[0];
    h[i][1] = (h[i - 1][1] * e + s[i] - '0') % wyx[1];
  }
  t = s.size() / 2;
  for (l3 = max(1, (int)s.size() / 3 - 2);
       l3 <= min((int)s.size() - 1 - 2, t + 2); l3++) {
    l1 = l3;
    l2 = s.size() - l1 - l3 - 1;
    if (check(l1, l2, l3)) {
      cout << s.substr(1, l1) + "+" + s.substr(l1 + 1, l2) + "=" +
                  s.substr(l1 + l2 + 1);
      return 0;
    }
    l1 = l3 - 1;
    l2 = s.size() - l1 - l3 - 1;
    if (check(l1, l2, l3)) {
      cout << s.substr(1, l1) + "+" + s.substr(l1 + 1, l2) + "=" +
                  s.substr(l1 + l2 + 1);
      return 0;
    }
    l2 = l3;
    l1 = s.size() - l2 - l3 - 1;
    if (check(l1, l2, l3)) {
      cout << s.substr(1, l1) + "+" + s.substr(l1 + 1, l2) + "=" +
                  s.substr(l1 + l2 + 1);
      return 0;
    }
    l2 = l3 - 1;
    l1 = s.size() - l2 - l3 - 1;
    if (check(l1, l2, l3)) {
      cout << s.substr(1, l1) + "+" + s.substr(l1 + 1, l2) + "=" +
                  s.substr(l1 + l2 + 1);
      return 0;
    }
  }
  return 20120222;
}
