#include <bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
using namespace std;
const long long INF = 0x7f7f7f7f;
template <typename _T>
void read(_T &x) {
  _T f = 1;
  x = 0;
  char s = getchar();
  while (s > '9' || s < '0') {
    if (s == '-') f = -1;
    s = getchar();
  }
  while (s >= '0' && s <= '9') {
    x = (x << 3) + (x << 1) + (s ^ 48);
    s = getchar();
  }
  x *= f;
}
int L(long long t) {
  if (0 <= t && t <= 9) return 1;
  return L(t / 10) + 1;
}
struct ming {
  long long x, y, z;
  bool friend operator<(const ming &a, const ming &b) {
    return L(a.x) + L(a.y) + L(a.z) < L(b.x) + L(b.y) + L(b.z);
  }
} res;
map<tuple<long long, long long, long long, long long>, ming> mp;
ming dfs(long long a, long long b, long long c, long long d) {
  int sw = (a > b);
  if (sw) swap(a, b);
  ming ret = (ming){INF, INF, INF}, tmp;
  tuple<long long, long long, long long, long long> now =
      (tuple<long long, long long, long long, long long>){a, b, c, d};
  if (mp.count(now))
    ret = mp[now];
  else {
    if (!a && !b && !c && !d) return mp[now] = (ming){0, 0, 0};
    if ((a + b + d) % 10 == c % 10) {
      ret = dfs(a / 10, b / 10, c / 10, (a % 10 + b % 10 + d) / 10);
      ret.x = ret.x * 10 + a % 10;
      ret.y = ret.y * 10 + b % 10;
      ret.z = ret.z * 10 + c % 10;
    } else {
      if (a || b || d) {
        int t = (a + b + d) % 10;
        tmp = dfs(a / 10, b / 10, c, (a % 10 + b % 10 + d) / 10);
        tmp.x = tmp.x * 10 + a % 10;
        tmp.y = tmp.y * 10 + b % 10;
        tmp.z = tmp.z * 10 + t;
        ret = min(ret, tmp);
      }
      if (a || c) {
        int t = (20 + c - d - a % 10) % 10;
        tmp = dfs(a / 10, b, c / 10, (a % 10 + t + d) / 10);
        tmp.x = tmp.x * 10 + a % 10;
        tmp.y = tmp.y * 10 + t;
        tmp.z = tmp.z * 10 + c % 10;
        ret = min(ret, tmp);
      }
      if (b || c) {
        int t = (20 + c - d - b % 10) % 10;
        tmp = dfs(a, b / 10, c / 10, (b % 10 + t + d) / 10);
        tmp.x = tmp.x * 10 + t;
        tmp.y = tmp.y * 10 + b % 10;
        tmp.z = tmp.z * 10 + c % 10;
        ret = min(ret, tmp);
      }
    }
    mp[now] = ret;
  }
  if (sw) swap(ret.x, ret.y);
  return ret;
}
signed main() {
  int a, b, c;
  scanf("%d+%d=%d", &a, &b, &c);
  ming res = dfs(a, b, c, 0);
  printf("%lld+%lld=%lld", res.x, res.y, res.z);
  return 0;
}
