#include <bits/stdc++.h>
using namespace std;
const int MX = 1000006;
char s[MX];
long long pw1[MX], pw2[MX];
pair<long long, long long> p[MX];
int nz[MX];
struct roll_hash {
  long long p1 = 10, p2 = 10;
  long long m1 = 2e9 + 203, m2 = 2e9 + 333;
  roll_hash(int len, long long pw1[], long long pw2[]) {
    pw1[0] = pw2[0] = 1;
    for (int i = 1; i <= len; i++) {
      pw1[i] = (pw1[i - 1] * p1) % m1;
      pw2[i] = (pw2[i - 1] * p2) % m2;
    }
  }
  pair<long long, long long> hash(char s[], int x, int y, long long pw1[],
                                  long long pw2[]) {
    long long h1 = 0, h2 = 0;
    for (int i = x; i <= y; i++) {
      long long c = s[i] - 48;
      h1 = (h1 + c >= m1) ? h1 + c - m1 : h1 + c;
      h1 = (h1 * p1) % m1;
      h2 = (h2 + c >= m2) ? h2 + c - m2 : h2 + c;
      h2 = (h2 * p2) % m2;
      p[i] = {h1, h2};
    }
    return {h1, h2};
  }
  pair<long long, long long> roll(char s[], int x, int y,
                                  pair<long long, long long> h) {
    long long h1 = h.first, h2 = h.second;
    long long c = s[x], d = s[y + 1];
    long long cp1 = (c * pw1[y - x + 1]) % m1;
    long long cp2 = (c * pw2[y - x + 1]) % m2;
    h1 = (h1 + d > m1) ? h1 + d - m1 : h1 + d;
    h1 = (h1 - cp1 + m1) % m1;
    h1 = (h1 * p1) % m1;
    h2 = (h2 + d > m2) ? h2 + d - m2 : h2 + d;
    h2 = (h2 - cp2 + m2) % m2;
    h2 = (h2 * p2) % m2;
    return {h1, h2};
  }
  pair<long long, long long> shift(pair<long long, long long> h, int x) {
    long long h1 = h.first, h2 = h.second;
    h1 = (h1 * pw1[x]) % m1;
    h2 = (h2 * pw2[x]) % m2;
    return {h1, h2};
  }
  pair<long long, long long> get_hash(int i, int j) {
    pair<long long, long long> z = {0, 0};
    pair<long long, long long> pi = i ? p[i - 1] : z;
    pair<long long, long long> pj = p[j];
    long long h1 = pj.first, h2 = pj.second;
    if (i) {
      pi = shift(pi, j - i + 1);
      h1 = (h1 - pi.first + m1) % m1;
      h2 = (h2 - pi.second + m2) % m2;
    }
    return {h1, h2};
  }
  pair<long long, long long> add(pair<long long, long long> h1,
                                 pair<long long, long long> h2) {
    h1.first = (h1.first + h2.first) % m1;
    h1.second = (h1.second + h2.second) % m2;
    return h1;
  }
};
int main() {
  scanf("%s", s);
  int n = strlen(s);
  roll_hash h(n, pw1, pw2);
  pair<long long, long long> hh = h.hash(s, 0, n - 1, pw1, pw2);
  int p = 0, q = 0;
  for (int l = 1; l <= n - 2; l++) {
    int I[] = {l - 1, l, n - l - l, n - l - l + 1};
    int J[] = {n - l - l + 1, n - l - l, l, l - 1};
    for (int k = 0; k < 4; k++) {
      int i = I[k], j = i + J[k] - 1;
      if (!(i > 0 && j < n - l && j - i + 1 > 0)) continue;
      if (i > 1 && s[0] == '0') continue;
      if (j > i && s[i] == '0') continue;
      if (n - j - 1 > 1 && s[j + 1] == '0') continue;
      pair<long long, long long> h1 = h.get_hash(0, i - 1);
      pair<long long, long long> h2 = h.get_hash(i, j);
      pair<long long, long long> h3 = h.get_hash(j + 1, n - 1);
      if (h.add(h1, h2) == h3) {
        p = i, q = j;
        break;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    if (i == p) printf("+");
    if (i == q + 1) printf("=");
    printf("%c", s[i]);
  }
  printf("\n");
  return 0;
}
