#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
char s[maxn];
int mod[4] = {1007, 999983, (int)1e9 + 7, (int)1e9 + 33};
long long p[4][maxn];
long long val[4][maxn];
int flag = 0;
int n;
void check(int a, int b) {
  int i, j;
  if (b <= a || n <= b || s[0] == '0' && a > 1 ||
      s[a + 1] == '0' && b - a > 1 || s[b + 1] == '0' && n - b > 1)
    return;
  for (i = 0; i < 4; i++) {
    long long x = val[i][a];
    long long y = val[i][b] - val[i][a] * p[i][b - a];
    long long z = val[i][n] - val[i][b] * p[i][n - b];
    if ((x + y - z) % mod[i]) {
      return;
    }
  }
  flag = 1;
  for (i = 1; i <= n; i++) {
    putchar(s[i]);
    if (i == a) putchar('+');
    if (i == b) putchar('=');
  }
  cout << endl;
}
int main() {
  int i, j;
  while (~scanf("%s", s + 1)) {
    n = strlen(s + 1);
    flag = 0;
    for (i = 0; i < 4; i++) p[i][0] = 1;
    for (i = 0; i < 4; i++) {
      for (j = 1; j <= n; j++) {
        val[i][j] = (val[i][j - 1] * 10 + s[j] - '0') % mod[i];
        p[i][j] = (p[i][j - 1] * 10) % mod[i];
      }
    }
    for (i = 1; i <= n - 1; i++) {
      check(i, n - i);
      if (flag) break;
      check(i, n - i - 1);
      if (flag) break;
      check(i, n - (n - i >> 1));
      if (flag) break;
      check(i, n - (n - i >> 1) - 1);
    }
  }
  return 0;
}
