#include <bits/stdc++.h>
using namespace std;
const long long N = 1e6 + 10, MOD = 1e9 + 7;
int n;
string s;
long long P[N], Hash[N + 1];
long long getHash(int l, int r) {
  return (Hash[r] - Hash[l - 1] * P[r - l + 1] % MOD + MOD) % MOD;
}
void write(int i, int j) {
  for (int k = 1; k < i + 1; k++) cout << s[k];
  cout << "+";
  for (int k = i + 1; k < j + 1; k++) cout << s[k];
  cout << "=";
  for (int k = j + 1; k < n + 1; k++) cout << s[k];
}
bool check(int i, int j) {
  if (j == i || (j - i != 1 && s[i + 1] == '0') ||
      (n - j != 1 && s[j + 1] == '0'))
    return 0;
  return 1;
}
int main() {
  cin >> s;
  s = " " + s;
  n = s.length() - 1;
  P[0] = 1;
  for (int i = 1; i < n + 1; i++) {
    P[i] = P[i - 1] * 10 % MOD;
    Hash[i] = (Hash[i - 1] * 10 + s[i] - '0') % MOD;
  }
  for (int i = 1; i < n - 1; i++) {
    int j, k = 0;
    if (i <= n / 3) {
      j = i + (n - i) / 2;
      if (i == n / 3 && n % 3 == 0) k = j - 1;
    } else
      j = n - i, k = j - 1;
    if (check(i, j) &&
        (getHash(1, i) + getHash(i + 1, j)) % MOD == getHash(j + 1, n))
      write(i, j), i = n;
    else if (k && check(i, k) &&
             (getHash(1, i) + getHash(i + 1, k)) % MOD == getHash(k + 1, n))
      write(i, k), i = n;
  }
  cin >> n;
  return 0;
}
