#include <bits/stdc++.h>
int n;
unsigned long long p[1000010], Hash[1000010], p1[1000010], Hash1[1000010];
char s[1000010];
inline int max(int a, int b) { return a > b ? a : b; }
unsigned long long HASH(int l, int r) {
  return Hash[r] - Hash[l - 1] * p[r - l + 1];
}
unsigned long long HASH1(int l, int r) {
  return (Hash1[r] - Hash1[l - 1] * p1[r - l + 1] % 39269999 + 39269999) %
         39269999;
}
void check(int l, int r) {
  int A = l, B = r - l, C = n - r;
  if (B == 0 || C == 0) return;
  if (C != max(A, B) && C != max(A, B) + 1) return;
  if (B > 1 && s[l + 1] == '0') return;
  if (C > 1 && s[r + 1] == '0') return;
  if (HASH(1, l) + HASH(l + 1, r) != HASH(r + 1, n)) return;
  if ((HASH1(1, l) + HASH1(l + 1, r) + 39269999) % 39269999 != HASH1(r + 1, n))
    return;
  for (int i = 1; i <= l; i++) putchar(s[i]);
  putchar('+');
  for (int i = l + 1; i <= r; i++) putchar(s[i]);
  putchar('=');
  for (int i = r + 1; i <= n; i++) putchar(s[i]);
  puts("");
  exit(0);
}
int main() {
  scanf("%s", s + 1), n = strlen(s + 1), p[0] = p1[0] = 1;
  for (int i = 1; i <= n; i++) {
    Hash[i] = Hash[i - 1] * 10 + s[i] - '0', p[i] = p[i - 1] * 10;
    Hash1[i] = (Hash1[i - 1] * 10 % 39269999 + s[i] - '0') % 39269999,
    p1[i] = p1[i - 1] * 10 % 39269999;
  }
  for (int i = 1, mid; i < n - 1; i++) {
    mid = (n - i) >> 1;
    check(i, i + mid), check(i, i + mid - 1);
    check(i, n - i), check(i, n - i - 1);
  }
  return 0;
}
