#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int res = 0, F = 1;
  char k;
  while (!isdigit(k = getchar()))
    if (k == '-') F = -1;
  while (isdigit(k)) {
    res = res * 10 + k - '0';
    k = getchar();
  }
  return res * F;
}
inline void write(int x) {
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  if (x > 9) {
    write(x / 10);
  }
  putchar(x % 10 + '0');
}
const int INF = 0x3f3f3f3f;
long long a, b, c, ans_a, ans_b, ans_c;
long long p[20];
int ans = INF;
void dfs(long long a, long long b, long long c, long long jw, long long na,
         long long nb, long long nc, int now, int deep) {
  if (now >= ans) return;
  if (a == 0 && b == 0 && c == 0 && jw == 0) {
    ans = now;
    ans_a = na;
    ans_b = nb;
    ans_c = nc;
    return;
  }
  if (c == 0) {
    long long res = a + b + jw;
    int tmp = 0;
    while (res != 0) {
      tmp++;
      res /= 10;
    }
    dfs(0, 0, 0, 0, na + p[deep] * a, nb + p[deep] * b,
        nc + p[deep] * (a + b + jw), now + tmp, deep + 1);
    return;
  }
  if ((a + b + jw) % 10 == c % 10) {
    dfs(a / 10, b / 10, c / 10, (a % 10 + b % 10 + jw) / 10,
        na + (a % 10) * p[deep], nb + (b % 10) * p[deep],
        nc + (c % 10) * p[deep], now, deep + 1);
    return;
  }
  dfs(a * 10 + (c % 10 - b % 10 - jw + 10) % 10, b, c, jw, na, nb, nc, now + 1,
      deep);
  dfs(a, b * 10 + (c % 10 - a % 10 - jw + 10) % 10, c, jw, na, nb, nc, now + 1,
      deep);
  dfs(a, b, c * 10 + (a % 10 + b % 10 + jw) % 10, jw, na, nb, nc, now + 1,
      deep);
}
int main() {
  scanf("%lld+%lld=%lld", &a, &b, &c);
  p[0] = 1;
  for (int i = 1; i <= 18; i++) {
    p[i] = p[i - 1] * 10;
  }
  dfs(a, b, c, 0, 0, 0, 0, 0, 0);
  printf("%lld+%lld=%lld", ans_a, ans_b, ans_c);
  return 0;
}
