#include <bits/stdc++.h>
using namespace std;
int n;
char s[1000010];
long long suffhash[1000010], prefhash[1000010], powdig[1000010];
long long ch, cl, cr;
set<pair<int, int> > poss;
char sum[1000010];
long long gh(long long lo, long long hi) {
  long long len1 = hi - lo + 1;
  long long v1 = (lo ? (powdig[len1] * prefhash[lo - 1]) % 1000000007 : 0);
  long long res = prefhash[hi] - v1 + 1000000007;
  res %= 1000000007;
  return res;
}
void check(int first, int second, int third) {
  if (first <= 0 || second <= 0 || third <= 0) return;
  if ((first > 1 && s[0] == '0') || (second > 1 && s[first] == '0') ||
      (third > 1 && s[first + second] == '0'))
    return;
  long long res = gh(0, first - 1) + gh(first, first + second - 1);
  long long ores = gh(first + second, n - 1);
  res %= 1000000007;
  if (res == ores) {
    poss.insert(make_pair(first - 1, first + second - 1));
  }
}
bool ok(int fi, int se) {
  for (int i = 0; i < n; i++) sum[i] = '0';
  sum[n] = '\0';
  for (int i = se; i > fi; i--) {
    sum[n - 1 + (i - se)] = s[i];
  }
  int ldig = (n - 1 + (fi + 1 - (se)));
  int carry = 0;
  for (int i = n - 1; i >= 0; i--) {
    int oi = fi + (i - (n - 1));
    int cres = sum[i] - '0' + carry + (oi < 0 ? 0 : (s[oi] - '0'));
    carry = (cres / 10);
    sum[i] = '0' + (cres % 10);
  }
  for (int i = n - 1; i >= 0; i--) {
    int oi = (i <= se) ? 0 : (s[i] - '0');
    if (oi != sum[i] - '0') return false;
  }
  for (int i = 0; i < n; i++) {
    printf("%c", s[i]);
    if (i == fi) printf("+");
    if (i == se) printf("=");
  }
  printf("\n");
  return true;
}
int main() {
  scanf("%s", s);
  n = strlen(s);
  ch = s[0] - '0';
  cl = 0;
  cr = 0;
  powdig[0] = 1;
  for (int i = 1; i <= n; i++) powdig[i] = (powdig[i - 1] * 10) % 1000000007;
  suffhash[n - 1] = s[n - 1] - '0';
  for (int i = n - 2; i >= 0; i--) {
    suffhash[i] = powdig[n - i - 1] * (s[i] - '0');
    suffhash[i] %= 1000000007;
    suffhash[i] += suffhash[i + 1];
    suffhash[i] %= 1000000007;
  }
  prefhash[0] = s[0] - '0';
  for (int i = 1; i < n; i++) {
    prefhash[i] = prefhash[i - 1] * 10;
    prefhash[i] += s[i] - '0';
    prefhash[i] %= 1000000007;
  }
  for (int i = 0; i < n - 2; i++) {
    int cdig = i + 1;
    int rem = n - cdig;
    if (cdig >= rem) break;
    int first = cdig;
    int second = rem - cdig;
    int third = cdig;
    check(first, second, third);
    second--;
    third++;
    check(first, second, third);
    int v = rem / 2;
    second = v;
    third = rem - v;
    check(first, second, third);
    second--;
    third++;
    check(first, second, third);
  }
  for (auto i : poss) {
    if (ok(i.first, i.second)) {
      return 0;
    }
  }
}
