#include <bits/stdc++.h>
using namespace std;
const long long md1 = 1e9 + 7, md2 = 1e5 + 9, C1 = 10, C2 = 10;
long long pow1[1000005], pow2[1000005];
vector<pair<int, int>> prefix;
string s;
pair<int, int> sub(pair<int, int> &a, pair<int, int> &b) {
  return make_pair((a.first - b.first + md1) % md1,
                   (a.second - b.second + md2) % md2);
}
void check(int idx1, int idx2) {
  if (idx1 <= 0 || idx2 - idx1 <= 0) return;
  auto c = prefix[idx2];
  int exp = s.size() - idx2;
  c.first = (long long)c.first * pow1[exp] % md1;
  c.second = (long long)c.second * pow2[exp] % md2;
  c = sub(prefix[s.size()], c);
  auto b = prefix[idx1];
  exp = idx2 - idx1;
  b.first = (long long)b.first * pow1[exp] % md1;
  b.second = (long long)b.second * pow2[exp] % md2;
  b = sub(prefix[idx2], b);
  auto a = prefix[idx1];
  if ((a.first + b.first) % md1 == c.first &&
      (a.second + b.second) % md2 == c.second) {
    for (int i = 0; i < idx1; cout << s[i++])
      ;
    cout << '+';
    for (int i = idx1; i < idx2; cout << s[i++])
      ;
    cout << '=';
    for (int i = idx2; i < s.size(); cout << s[i++])
      ;
    exit(0);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int x1 = 0, x2 = 0;
  prefix.push_back({0, 0});
  pow1[0] = pow2[0] = 1;
  for (int i = 1; i < 1000005; ++i)
    pow1[i] = pow1[i - 1] * 10 % md1, pow2[i] = pow2[i - 1] * 10 % md2;
  cin >> s;
  for (int i = 0; i < s.size(); ++i) {
    int val = s[i] - '0';
    x1 = (long long)(x1 * C1 + val) % md1;
    x2 = (long long)(x2 * C2 + val) % md2;
    prefix.push_back({x1, x2});
  }
  for (int y = s.size(); --y;) {
    int idx2 = y;
    int len = s.size() - y;
    int idx1 = y - len + 1;
    check(idx1, idx2);
    idx1--;
    check(idx1, idx2);
    idx1 = (s.size() - y);
    check(idx1, idx2);
    idx1--;
    check(idx1, idx2);
  }
}
