#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
const int mod1 = 1e9 + 7;
const int mod2 = 998244353;
const int inf = 0x3f3f3f3f;
int n, m, a[N];
long long x, y, z, inv1[N], inv2[N], sum1[N], sum2[N];
inline void Init() {
  register char c = getchar();
  for (; c < '0' || c > '9';) c = getchar();
  for (; c >= '0' && c <= '9'; c = getchar()) a[++n] = c - '0';
  inv1[1] = 700000005;
  inv2[1] = 299473306;
  for (int i = 2; i <= n; i++) {
    inv1[i] = inv1[i - 1] * inv1[1] % mod1;
    inv2[i] = inv2[i - 1] * inv2[1] % mod2;
  }
  long long t1 = 1, t2 = 1;
  for (int i = n; i >= 1; i--) {
    sum1[i] = (sum1[i + 1] + t1 * a[i]) % mod1;
    sum2[i] = (sum2[i + 1] + t2 * a[i]) % mod2;
    t1 = t1 * 10 % mod1;
    t2 = t2 * 10 % mod2;
  }
}
inline void Check(int l, int r) {
  if (l <= 0 || r <= l) return;
  long long x1 = sum1[r + 1], x2 = sum2[r + 1];
  long long y1 = (sum1[l + 1] - sum1[r + 1] + mod1) * inv1[n - r] % mod1,
            y2 = (sum2[l + 1] - sum2[r + 1] + mod2) * inv2[n - r] % mod2;
  long long z1 = (sum1[1] - sum1[l + 1] + mod1) * inv1[n - l] % mod1,
            z2 = (sum2[1] - sum2[l + 1] + mod2) * inv2[n - l] % mod2;
  if ((!a[1] && z1) || (!a[l + 1] && y1) || (!a[r + 1] && x1)) return;
  if ((z1 + y1) % mod1 == x1)
    if ((z2 + y2) % mod2 == x2) {
      for (int i = 1; i <= l; i++) putchar(a[i] + '0');
      putchar('+');
      for (int i = l + 1; i <= r; i++) putchar(a[i] + '0');
      putchar('=');
      for (int i = r + 1; i <= n; i++) putchar(a[i] + '0');
      exit(0);
    }
}
inline void Work() {
  for (int i = n / 3; i <= n >> 1; i++) {
    Check(i, n - i);
    Check(i - 1, n - i);
    Check(n - i - i, n - i);
    Check(n - i - i + 1, n - i);
  }
}
int main() {
  Init();
  Work();
  return 0;
}
