#include <bits/stdc++.h>
using namespace std;
int mn = 1e9;
long long x, y, p[30];
struct node {
  int a, b, c, cnt;
  long long jin;
  bool operator<(const node &B) const {
    if (a != B.a) return a < B.a;
    if (b != B.b) return b < B.b;
    if (c != B.c) return c < B.c;
    if (jin != B.jin) return jin < B.jin;
    return cnt < B.cnt;
  }
};
set<node> s;
void dfs(int a, int b, int c, long long jin, long long A, long long B, int cnt,
         int wei) {
  if (cnt >= mn) return;
  if (a == 0 && b == 0 && c == 0 && jin == 0) {
    x = A, y = B, mn = cnt;
    return;
  }
  if (s.find((node){a, b, c, cnt, jin}) != s.end()) return;
  s.insert((node){a, b, c, cnt, jin});
  if (c == 0) {
    for (long long lin = a + b + jin; lin; lin /= 10) cnt++;
    dfs(0, 0, 0, 0, A + a * p[wei], B + b * p[wei], cnt, wei);
    return;
  }
  int num = a % 10 + b % 10 + jin;
  if (num % 10 == c % 10)
    dfs(a / 10, b / 10, c / 10, num / 10, A + a % 10 * p[wei],
        B + b % 10 * p[wei], cnt, wei + 1);
  else {
    cnt++;
    dfs(a * 10 + (c + 10 - b % 10 - jin) % 10, b, c, jin, A, B, cnt, wei);
    dfs(a, b * 10 + (c + 10 - a % 10 - jin) % 10, c, jin, A, B, cnt, wei);
    dfs(a, b, c * 10 + (a + b + jin) % 10, jin, A, B, cnt, wei);
  }
}
int main() {
  int a, b, c;
  scanf("%d+%d=%d", &a, &b, &c);
  p[0] = 1;
  for (int i = 1; i <= 17; i++) p[i] = p[i - 1] * 10;
  dfs(a, b, c, 0, 0, 0, 0, 0);
  printf("%I64d+%I64d=%I64d\n", x, y, x + y);
}
