#include <bits/stdc++.h>
using namespace std;
template <class T>
bool tomin(T &x, T y) {
  return x > y ? x = y, 1 : 0;
}
template <class T>
bool tomax(T &x, T y) {
  return x < y ? x = y, 1 : 0;
}
template <class T>
void read(T &x) {
  char c;
  x = 0;
  int f = 1;
  while (c = getchar(), c < '0' || c > '9')
    if (c == '-') f = -1;
  do x = (x << 3) + (x << 1) + (c ^ 48);
  while (c = getchar(), c >= '0' && c <= '9');
  x *= f;
}
const double Pi = acos(-1);
const int maxn = 1e6 + 5;
const int P = 1e9 + 7;
const int base = 10;
int n;
char A[maxn];
long long h[maxn];
long long fact[maxn];
long long Val(int s, int e) { return (h[e] - h[s] * fact[e - s] % P + P) % P; }
void solve(int len1, int len2, int len3) {
  if (len1 <= 0 || len2 <= 0 || len3 <= 0) return;
  if (len1 > len3 || len2 > len3) return;
  int e1 = len1, e2 = len1 + len2, e3 = n;
  long long res1 = Val(0, e1);
  long long res2 = Val(e1, e2);
  long long res3 = Val(e2, e3);
  if (len1 > 1 && res1 == Val(1, e1)) return;
  if (len2 > 1 && res2 == Val(e1 + 1, e2)) return;
  if (len3 > 1 && res3 == Val(e2 + 1, e3)) return;
  if ((res1 + res2) % P == res3) {
    for (int i = 1, i_ = e1; i <= i_; i++) printf("%c", A[i]);
    putchar('+');
    for (int i = e1 + 1, i_ = e2; i <= i_; i++) printf("%c", A[i]);
    putchar('=');
    for (int i = e2 + 1, i_ = e3; i <= i_; i++) printf("%c", A[i]);
    exit(0);
  }
}
int main() {
  scanf("%s", A + 1), n = strlen(A + 1);
  fact[0] = 1;
  for (int i = 1, i_ = n; i <= i_; i++) {
    h[i] = (h[i - 1] * base + A[i] - '0') % P;
    fact[i] = fact[i - 1] * base % P;
  }
  for (int l = 1, l_ = n; l <= l_; l++) {
    solve(l, n - 2 * l, l);
    solve(n - 2 * l, l, l);
    solve(l - 1, n - 2 * l + 1, l);
    solve(n - 2 * l + 1, l - 1, l);
  }
  return 0;
}
