#include <bits/stdc++.h>
using namespace std;
const int n_max = 1e6 + 10;
const long long mod = 1e9 + 7;
string s;
vector<long long> h(n_max), p(n_max);
long long n, x1, x2, x3;
void hash2() {
  p[0] = 1;
  for (int i = 1; i <= s.length(); i++) {
    p[i] = p[i - 1] * 10 % mod;
    h[i] = (h[i - 1] + (s[i - 1] - '0')) * 10 % mod;
  }
}
long long get_hash(long long l, long long r) {
  return ((h[r] - h[l - 1] * p[r - l + 1]) % mod + mod) % mod;
}
bool check(long long p1, long long p2) {
  long long a = get_hash(1, p1) % mod;
  long long b = get_hash(p1 + 1, p2 + p1) % mod;
  long long c = get_hash(p2 + p1 + 1, n) % mod;
  if ((a + b) % mod == c) return true;
  return false;
}
int main() {
  cin >> s;
  n = s.length();
  hash2();
  bool b = false;
  for (long long i = 1; i <= (n / 3); i++) {
    if (check(i, (n - i) / 2)) {
      x1 = i, x2 = (n - i) / 2, x3 = n - i - (n - i) / 2;
      b = true;
      if (s[x1] == '0' || s[x2] == '0' || s[x3] == '0') b = false;
      if (b) break;
    }
    if (check((n - i) / 2, i) && s[x1 - 1] != '0' && s[x2 - 1] != '0' &&
        s[x3 - 1] != '0') {
      x1 = (n - i) / 2, x2 = i, x3 = n - i - (n - i) / 2;
      b = true;
      if (s[x1] == '0' || s[x2] == '0' || s[x3] == '0') b = false;
      if (b) break;
    }
  }
  for (int i = 0; i < s.length(); i++) {
    if (i == x1)
      cout << '+';
    else if (i == x2 + x1)
      cout << '=';
    cout << s[i];
  }
}
