#include <bits/stdc++.h>
using namespace std;
namespace IO {
template <typename T>
void read(T &x) {
  int pl = 1;
  x = 0;
  char c = getchar();
  while (!(c >= '0' && c <= '9')) {
    if (c == '-') pl = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
  x *= pl;
}
template <typename T>
void print(T x, char c) {
  if (x == 0) putchar('0');
  if (x < 0) putchar('-'), x = -x;
  int s[21] = {0};
  while (x) s[++s[0]] = x % 10, x /= 10;
  while (s[0]) putchar(s[s[0]--] + '0');
  putchar(c);
}
}  // namespace IO
const int N = 1e6 + 5, K = 2;
const int mod[K + 1] = {0, 2006072441, 1999999973};
int n;
char s[N];
struct Hash {
  int hsh[K + 1];
  friend Hash operator+(Hash x, Hash y) {
    Hash rt;
    for (int i = 1; i <= K; i++)
      rt.hsh[i] = (1ll * x.hsh[i] + 1ll * y.hsh[i]) % mod[i];
    return rt;
  }
  friend Hash operator-(Hash x, Hash y) {
    Hash rt;
    for (int i = 1; i <= K; i++)
      rt.hsh[i] = (1ll * x.hsh[i] - 1ll * y.hsh[i] + 1ll * mod[i]) % mod[i];
    return rt;
  }
  friend Hash operator*(Hash x, Hash y) {
    Hash rt;
    for (int i = 1; i <= K; i++) rt.hsh[i] = 1ll * x.hsh[i] * y.hsh[i] % mod[i];
    return rt;
  }
  friend bool operator==(Hash x, Hash y) {
    for (int i = 1; i <= K; i++)
      if (x.hsh[i] != y.hsh[i]) return false;
    return true;
  }
} pw[N], sum[N];
Hash Hsh(int l, int r) { return sum[r] - sum[l - 1] * pw[r - l + 1]; }
bool check(int l1, int l2, int l3) {
  if ((s[1] == '0' && l1 > 1) || (s[1 + l1] == '0' && l2 > 1) ||
      (s[1 + l1 + l2] == '0' && l3 > 1))
    return false;
  if (Hsh(1, l1) + Hsh(l1 + 1, l1 + l2) == Hsh(l1 + l2 + 1, l1 + l2 + l3))
    return true;
  return false;
}
void print(int l1, int l2, int l3) {
  for (int i = 1; i <= l1; i++) putchar(s[i]);
  putchar('+');
  for (int i = l1 + 1; i <= l1 + l2; i++) putchar(s[i]);
  putchar('=');
  for (int i = l1 + l2 + 1; i <= l1 + l2 + l3; i++) putchar(s[i]);
}
int main() {
  scanf("%s", s + 1);
  n = strlen(s + 1);
  pw[0].hsh[1] = pw[0].hsh[2] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= K; j++)
      pw[i].hsh[j] = pw[i - 1].hsh[j] * 10ll % mod[j];
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= K; j++)
      sum[i].hsh[j] = (sum[i - 1].hsh[j] * 10ll + s[i] - '0') % mod[j];
  for (int i = 1; i <= (n - 1) / 2; i++) {
    if (n - 2 * i <= i && check(i, n - 2 * i, i)) {
      print(i, n - 2 * i, i);
      return 0;
    }
    if (n - 2 * i - 1 <= i && check(i, n - 2 * i - 1, i + 1)) {
      print(i, n - 2 * i - 1, i + 1);
      return 0;
    }
    if ((n - i) / 2 >= i && check(i, (n - i) / 2, (n - i + 1) / 2)) {
      print(i, (n - i) / 2, (n - i + 1) / 2);
      return 0;
    }
  }
  return 0;
}
