#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const int MAXN = 1e6 + 5;
const long long LINF = 1e18;
const double pi = 3.1415926535;
const long long MOD = 1e9 + 7;
char s[MAXN];
int n;
vector<long long> po10;
int v[MAXN];
vector<long long> strHash(MAXN);
int ans1, ans2, ans3;
int toInt(char c) { return c - '0'; }
long long po(long long b, long long p) {
  return !p ? 1 : po(b * b % MOD, p / 2) * (p & 1 ? b : 1) % MOD;
}
long long inv(long long b) { return po(b, MOD - 2); }
void preprocess() {
  for (int i = 0; i <= 1e6; i++) {
    po10.push_back(po(10, i));
  }
}
void calcHash() {
  strHash[0] = v[0];
  long long p = 1;
  for (int i = 1; i < n; i++) {
    strHash[i] = (strHash[i - 1] * 10 + v[i]) % MOD;
  }
}
bool checkValid(int len1, int len2, int len3) {
  if (v[0] == 0 && len1 > 1) return false;
  if (v[len1] == 0 && len2 > 1) return false;
  if (v[len1 + len2] == 0 && len3 > 1) return false;
  long long hash3 =
      (strHash[n - 1] - strHash[len1 + len2 - 1] * po10[len3] % MOD + MOD) %
      MOD;
  long long hash1 = strHash[len1 - 1];
  long long hash2 =
      (strHash[len1 + len2 - 1] - strHash[len1 - 1] * po10[len2] % MOD + MOD) %
      MOD;
  if ((hash1 + hash2) % MOD == hash3) {
    int t = 0;
    int p1 = len1 - 1, p2 = len1 + len2 - 1, p3 = n - 1;
    while (p1 >= 0 || p2 >= len1) {
      int v1, v2;
      if (p1 >= 0)
        v1 = v[p1];
      else
        v1 = 0;
      if (p2 >= len1)
        v2 = v[p2];
      else
        v2 = 0;
      int cur = v1 + v2 + t;
      if ((cur % 10) != v[p3]) return false;
      t = cur / 10;
      if (p1 >= 0) p1--;
      if (p2 >= len1) p2--;
      p3--;
    }
    if (t > 0) {
      if (v[p3] != 1) return false;
      p3--;
    }
    if (p3 != len1 + len2 - 1) return false;
    return true;
  }
  return false;
}
void print(int len1, int len2, int len3) {
  int idx = 0;
  for (int i = 0; i < len1; i++) cout << s[idx++];
  cout << "+";
  for (int i = 0; i < len2; i++) cout << s[idx++];
  cout << "=";
  for (int i = 0; i < len3; i++) cout << s[idx++];
  cout << "\n";
}
void solve() {
  int len1, len2, len3;
  for (len3 = 1; len3 <= n / 2; len3++) {
    len1 = len3;
    len2 = n - len1 - len3;
    if (len2 > 0 && len2 <= len3 && checkValid(len1, len2, len3)) {
      print(len1, len2, len3);
      return;
    }
    len1 = len3 - 1;
    len2 = n - len1 - len3;
    if (len1 > 0 && len2 > 0 && len2 <= len3 && checkValid(len1, len2, len3)) {
      print(len1, len2, len3);
      return;
    }
    len2 = len3;
    len1 = n - len2 - len3;
    if (len1 > 0 && len1 < len3 - 1 && checkValid(len1, len2, len3)) {
      print(len1, len2, len3);
      return;
    }
    len2 = len3 - 1;
    len1 = n - len2 - len3;
    if (len1 > 0 && len2 > 0 && len1 < len3 - 1 &&
        checkValid(len1, len2, len3)) {
      print(len1, len2, len3);
      return;
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  preprocess();
  cin >> s;
  n = strlen(s);
  for (int i = 0; i < n; i++) {
    v[i] = toInt(s[i]);
  }
  calcHash();
  solve();
  return 0;
}
