#include <bits/stdc++.h>
using namespace std;
const int dx[] = {0, 1, 0, -1};
const int dy[] = {1, 0, -1, 0};
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
inline long long read1() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
int ans;
long long w[20], ansa, ansb, ansc;
void dfs(long long a, long long b, long long c, long long nowa, long long nowb,
         long long jin, int nowl, int wei) {
  if (nowl >= ans) return;
  if (!a && !b && !c && !jin) {
    ans = nowl;
    ansa = nowa;
    ansb = nowb;
    return;
  }
  if (!c) {
    int tot = 0;
    long long nw = jin + a + b;
    while (nw) {
      tot++;
      nw /= 10;
    }
    dfs(0, 0, 0, nowa + a * w[wei], nowb + b * w[wei], 0, nowl + tot, wei);
    return;
  }
  if ((a + b + jin) % 10 == c % 10)
    dfs(a / 10, b / 10, c / 10, nowa + a % 10 * w[wei], nowb + b % 10 * w[wei],
        (a % 10 + b % 10 + jin) / 10, nowl, wei + 1);
  else {
    dfs(a * 10 + (c + 10 - b % 10 - jin) % 10, b, c, nowa, nowb, jin, nowl + 1,
        wei);
    dfs(a, b * 10 + (c + 10 - a % 10 - jin) % 10, c, nowa, nowb, jin, nowl + 1,
        wei);
    dfs(a, b, c * 10 + (a + b + jin) % 10, nowa, nowb, jin, nowl + 1, wei);
  }
}
int a, b, c;
int main() {
  scanf("%d+%d=%d", &a, &b, &c);
  w[0] = 1;
  ans = 12;
  for (int i = 1; i <= 18; i++) w[i] = w[i - 1] * 10;
  dfs(a, b, c, 0, 0, 0, 0, 0);
  printf("%I64d+%I64d=%I64d", ansa, ansb, ansa + ansb);
  return 0;
}
