#include <bits/stdc++.h>
using std::cin;
using std::cout;
const int MAX_N = 1000000;
const int BASE = 10;
const int P = 1000000007;
int n;
char a[1 + MAX_N];
long long prefHash[1 + MAX_N], baseHash[1 + MAX_N];
long long getHash(int begin, int end) {
  return (prefHash[end] + P - prefHash[begin] * baseHash[end - begin] % P) % P;
}
long long getHashA(int pozPlus) { return getHash(0, pozPlus); }
long long getHashB(int pozPlus, int pozEgal) {
  return getHash(pozPlus, pozEgal);
}
long long getHashC(int pozEgal) { return getHash(pozEgal, n); }
void afis(int pozPlus, int pozEgal) {
  for (int i = 1; i <= n; i++) {
    cout << a[i];
    if (i == pozPlus) cout << "+";
    if (i == pozEgal) cout << "=";
  }
}
bool verif(int pozPlus, int pozEgal) {
  if (pozEgal != pozPlus &&
      ((std::max(pozPlus, pozEgal - pozPlus) + 1 == n - pozEgal) ||
       (std::max(pozPlus, pozEgal - pozPlus) == n - pozEgal)))
    return (getHashA(pozPlus) + getHashB(pozPlus, pozEgal)) % P ==
           getHashC(pozEgal);
  return false;
}
int main() {
  cin.get(a + 1, MAX_N + 1, '\n');
  n = strlen(a + 1);
  for (int k = 1; k <= n; k++)
    prefHash[k] = (prefHash[k - 1] * 10 + a[k] - '0') % P;
  baseHash[0] = 1;
  for (int e = 1; e <= n; e++) baseHash[e] = baseHash[e - 1] * BASE % P;
  for (int pozEgal = (n + 1) / 2; pozEgal < n; pozEgal++) {
    int pozPlus;
    if (a[pozEgal + 1] == '0' && n - pozEgal != 1) continue;
    pozPlus = n - pozEgal;
    if ((a[pozPlus + 1] != '0' || pozEgal - pozPlus == 1) &&
        verif(pozPlus, pozEgal)) {
      afis(pozPlus, pozEgal);
      cout << '\n';
      break;
    }
    pozPlus = n - pozEgal - 1;
    if (pozPlus > 0 && (a[pozPlus + 1] != '0' || pozEgal - pozPlus == 1) &&
        verif(pozPlus, pozEgal)) {
      afis(pozPlus, pozEgal);
      cout << '\n';
      break;
    }
    pozPlus = pozEgal - (n - pozEgal);
    if (pozPlus > 0 && (a[pozPlus + 1] != '0' || pozEgal - pozPlus == 1) &&
        verif(pozPlus, pozEgal)) {
      afis(pozPlus, pozEgal);
      cout << '\n';
      break;
    }
    pozPlus = pozEgal - (n - pozEgal) + 1;
    if ((a[pozPlus + 1] != '0' || pozEgal - pozPlus == 1) &&
        verif(pozPlus, pozEgal)) {
      afis(pozPlus, pozEgal);
      cout << '\n';
      break;
    }
  }
  return 0;
}
