#include <bits/stdc++.h>
using namespace std;
template <typename T>
using vc = vector<T>;
using pii = pair<long long, long long>;
void xmax(long long& a, long long b) { a = max(a, b); }
void xmin(long long& a, long long b) { a = min(a, b); }
void print(vc<long long>& a, string second) {
  cerr << "prinitng " << second << ": ";
  for (long long i = 0; i < a.size(); i++) {
    cerr << a[i] << " ";
  }
  cerr << endl;
}
bool geht(long long i, long long n) {
  for (long long j = 0; j < 10; j++) {
    if (i & (1 << j)) n--;
  }
  return n == 0;
}
void fill_vec(vc<long long>& cur, const vc<long long>& a, long long k) {
  long long j = 0;
  for (long long i = 0; i < 10; i++) {
    if (k & (1 << i)) cur[i] = a[j++];
  }
}
long long last_left(long long i) {
  long long l = 0;
  for (long long k = 0; k < 10; k++) {
    if (i & (1 << k)) l = k;
  }
  return l;
}
void cut(vc<long long>& a) {
  while (a.back() == 0) a.pop_back();
}
void pprint(vc<long long> a) {
  for (long long i = 0; i < a.size(); i++) {
    cout << a[a.size() - i - 1];
  }
}
long long f_size(vc<long long>& a) {
  long long l = 0;
  for (long long i = 0; i < a.size(); i++) {
    if (a[i] != 0) l = i;
  }
  return l;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  vc<long long> a, b, c;
  string second;
  cin >> second;
  long long index = 0;
  for (long long i = 0; i < second.size(); i++) {
    if (second[i] == '+') {
      index++;
      continue;
    }
    if (second[i] == '=') {
      index++;
      continue;
    }
    switch (index) {
      case 0:
        a.push_back(second[i] - '0');
        break;
      case 1:
        b.push_back(second[i] - '0');
        break;
      case 2:
        c.push_back(second[i] - '0');
    }
  }
  vc<long long> sola;
  vc<long long> solb;
  vc<long long> solc;
  long long length = 100;
  long long n = c.size();
  reverse(a.begin(), a.end());
  reverse(b.begin(), b.end());
  reverse(c.begin(), c.end());
  for (long long i = 0; i < (1 << 10); i++) {
    if (!geht(i, a.size())) continue;
    for (long long j = 0; j < (1 << 10); j++) {
      if (!geht(j, b.size())) continue;
      long long i1 = 0;
      long long i2 = 1;
      if (last_left(i) > last_left(j)) {
        i1 = 1;
        i2 = 0;
      }
      vector<long long> cur[2] = {vc<long long>(10, -1), vc<long long>(10, -1)};
      fill_vec(cur[0], a, i);
      fill_vec(cur[1], b, j);
      long long ind = 0;
      long long mit = 0;
      vc<long long> cur_c(11, 0);
      for (long long k = 0; k < 10; k++) {
        long long sum = 0;
        if (cur[i2][k] == -1) {
          if (cur[i1][k] == -1) cur[i1][k] = 0;
          if (ind >= c.size())
            cur[i2][k] = 0;
          else
            cur[i2][k] = (10 + c[ind] - mit - cur[i1][k]) % 10;
        } else if (cur[i1][k] == -1) {
          if (ind >= c.size())
            cur[i1][k] = 0;
          else
            cur[i1][k] = (10 + c[ind] - mit - cur[i2][k]) % 10;
        }
        if (ind < c.size() && (cur[i1][k] + mit + cur[i2][k]) % 10 == c[ind])
          ind++;
        cur_c[k] = (cur[i1][k] + mit + cur[i2][k]) % 10;
        if (cur[i1][k] + mit + cur[i2][k] >= 10)
          mit = 1;
        else
          mit = 0;
      }
      if (mit == 1) {
        cur_c[10] = 1;
        if (ind > c.size() && c[ind] == 1) ind++;
      }
      if (ind != c.size()) continue;
      long long cur_l = f_size(cur[0]) + f_size(cur[1]) + f_size(cur_c);
      if (length > cur_l) {
        length = cur_l;
        sola = cur[0];
        solb = cur[1];
        solc = cur_c;
      }
    }
  }
  cut(sola);
  cut(solb);
  cut(solc);
  pprint(sola);
  cout << "+";
  pprint(solb);
  cout << "=";
  pprint(solc);
  cout << "\n";
}
