#include <bits/stdc++.h>
using namespace std;
const double PI = 3.14159265358979;
const double eps = 1e-9;
const long long _INF = 1e18;
const int INF = 1e9;
const int maxn = 1000010;
const int maxm = 10000;
int n;
char s[maxn];
long long num[maxn], inv[maxn];
inline long long pw(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = res * a % 1000000007;
    a = a * a % 1000000007;
    b >>= 1;
  }
  return res;
}
inline void printstr(int l, int r) {
  for (int i = l; i <= r; ++i) putchar(s[i]);
}
inline long long calc(int l, int r) {
  long long val =
      ((num[l] - num[r + 1]) % 1000000007 + 1000000007) % 1000000007;
  return val * inv[n - r] % 1000000007;
}
inline bool check(long long l1, long long l2, long long l3) {
  if (l1 > l3 || l2 > l3 || l1 < 1 || l2 < 1 || l3 < 1) return false;
  int pl1 = 1, pl2 = l1 + 1, pl3 = l1 + l2 + 1, pr1 = l1, pr2 = l1 + l2,
      pr3 = l1 + l2 + l3;
  if (s[pl1] == '0' && pr1 - pl1 + 1 != 1) return false;
  if (s[pl2] == '0' && pr2 - pl2 + 1 != 1) return false;
  if (s[pl3] == '0' && pr3 - pl3 + 1 != 1) return false;
  if ((calc(pl1, pr1) + calc(pl2, pr2)) % 1000000007 == calc(pl3, pr3)) {
    printstr(pl1, pr1);
    putchar('+');
    printstr(pl2, pr2);
    putchar('=');
    printstr(pl3, pr3);
    return true;
  }
  return false;
}
int main() {
  while (~scanf("%s", s + 1)) {
    inv[1000000] = pw(pw(10LL, 1000000LL), 1000000007 - 2);
    for (int i = 999999; ~i; --i) inv[i] = inv[i + 1] * 10 % 1000000007;
    n = strlen(s + 1);
    num[n + 1] = 0;
    for (int i = n; i; --i)
      num[i] = (num[i + 1] + (s[i] - '0') * pw(10LL, n - i) % 1000000007 +
                1000000007) %
               1000000007;
    for (int div = 1; div <= n; ++div)
      if (check(div - 1, n - div * 2 + 1, div) ||
          check(div, n - div * 2, div) ||
          check(n - div * 2 + 1, div - 1, div) || check(n - div * 2, div, div))
        break;
  }
  return 0;
}
