#include <bits/stdc++.h>
using namespace std;
const int Mod1 = 1e9 + 7, Mod2 = 19260817;
const int N = 1e6 + 5;
long long pB1[N], pB2[N];
long long S1[N], S2[N];
char str[N];
int n;
long long query1(int x, int y) {
  return ((S1[y] - S1[x - 1] * pB1[y - x + 1]) % Mod1 + Mod1) % Mod1;
}
long long query2(int x, int y) {
  return ((S2[y] - S2[x - 1] * pB2[y - x + 1]) % Mod2 + Mod2) % Mod2;
}
void Print(int x, int y) {
  for (int i = (1), iEND = (x); i <= iEND; ++i) putchar(str[i]);
  putchar('+');
  for (int i = (x + 1), iEND = (y); i <= iEND; ++i) putchar(str[i]);
  putchar('=');
  for (int i = (y + 1), iEND = (n); i <= iEND; ++i) putchar(str[i]);
  puts("");
}
bool check(int x, int y) {
  if (x <= 0 || (str[1] == '0' && x > 1)) return false;
  if (y - x <= 0 || (str[x + 1] == '0' && y - x > 1)) return false;
  if (n - y <= 0 || (str[y + 1] == '0' && n - y > 1)) return false;
  if (((query1(1, x) + query1(x + 1, y)) % Mod1 == query1(y + 1, n) &&
       (query2(1, x) + query2(x + 1, y)) % Mod2 == query2(y + 1, n))) {
    Print(x, y);
    return true;
  } else
    return false;
}
int main() {
  pB1[0] = 1;
  for (int i = (1), iEND = (N - 1); i <= iEND; ++i)
    pB1[i] = pB1[i - 1] * 10 % Mod1;
  pB2[0] = 1;
  for (int i = (1), iEND = (N - 1); i <= iEND; ++i)
    pB2[i] = pB2[i - 1] * 10 % Mod2;
  scanf("%s", str + 1);
  n = strlen(str + 1);
  for (int i = (1), iEND = (n); i <= iEND; ++i) {
    S1[i] = (S1[i - 1] * 10 + str[i] - '0') % Mod1;
    S2[i] = (S2[i - 1] * 10 + str[i] - '0') % Mod2;
  }
  for (int i = (1), iEND = (n - 2); i <= iEND; ++i)
    if (check(i, n - i) || check(i - 1, n - i) || check(n - 2 * i, n - i) ||
        check(n - 2 * i + 1, n - i))
      return 0;
  return 0;
}
