#include <bits/stdc++.h>
using namespace std;
const long long df = 1e6 + 7, inf = INT_MAX;
char st[df];
long long sum1, sum2, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, tot,
    len, h1[df], h2[df], base = 10, mod1 = 19260817, mod2 = 1e9 + 9, bt1[df],
                         bt2[df];
bool nozero(long long x, long long y, long long z) {
  return ((st[x] != '0' || x == y - 1) & (st[y] != '0' || y == z));
}
long long hash1(long long l, long long r) {
  return ((h1[r] - h1[l - 1] * bt1[r - l + 1]) % mod1 + mod1) % mod1;
}
long long hash2(long long l, long long r) {
  return ((h2[r] - h2[l - 1] * bt2[r - l + 1]) % mod2 + mod2) % mod2;
}
bool check(long long a, long long b, long long c) {
  if (b >= c || a > b) return 0;
  if ((hash1(a, b) + hash1(b + 1, c)) % mod1 == sum1 &&
      (hash2(a, b) + hash2(b + 1, c)) % mod2 == sum2 && nozero(a, b + 1, c))
    return 1;
  return 0;
}
void out(long long l, long long mid, long long r) {
  for (long long i = (l); i <= (mid); ++i) putchar(st[i]);
  putchar('+');
  for (long long i = (mid + 1); i <= (r); ++i) putchar(st[i]);
  putchar('=');
  for (long long i = (r + 1); i <= (s); ++i) putchar(st[i]);
  puts("");
  return;
}
int main() {
  scanf("%s", st + 1);
  for (long long i = 1; st[i]; ++i) s = max(s, i);
  bt1[0] = bt2[0] = 1;
  for (long long i = (1); i <= (s); ++i)
    h1[i] = (h1[i - 1] * base + st[i] - '0') % mod1,
    bt1[i] = (bt1[i - 1] * base) % mod1,
    h2[i] = (h2[i - 1] * base + st[i] - '0') % mod2,
    bt2[i] = (bt2[i - 1] * base) % mod2;
  for (long long i = (s - 1); i >= (max(1LL, s / 2 - 1)); --i) {
    sum1 = hash1(i + 1, s), sum2 = hash2(i + 1, s), len = s - i;
    if (check(1, len, i))
      out(1, len, i);
    else if (check(1, len - 1, i))
      out(1, len - 1, i);
    else if (check(1, i - len, i))
      out(1, i - len, i);
    else if (check(1, i - len + 1, i))
      out(1, i - len + 1, i);
  }
  return 0;
}
