#include <bits/stdc++.h>
int32_t get(const std::string& s, size_t p) {
  if (p < s.size()) {
    return s[s.size() - 1 - p] - '0';
  }
  return 0;
}
std::tuple<size_t, std::string, std::string, std::string> dp(
    const std::string& a, const std::string& b, const std::string& c, size_t pa,
    size_t pb, size_t pc, size_t ta, size_t tb, size_t tc, size_t l,
    int32_t carry) {
  if (pa > 12 || pb > 12 || pc > 12) {
    return {std::numeric_limits<size_t>::max(), "", "", ""};
  }
  if (pa >= a.size() && pb >= b.size() && pc >= c.size()) {
    if (carry) {
      return {l * 3 - ta - tb - tc + 2, "1", "", "1"};
    } else {
      return {l * 3 - ta - tb - tc, "", "", ""};
    }
  }
  std::tuple<size_t, std::string, std::string, std::string> result = {
      std::numeric_limits<size_t>::max(), "", "", ""};
  if ((get(a, pa) + get(b, pb) + carry) % 10 == get(c, pc)) {
    const auto local =
        dp(a, b, c, pa + 1, pb + 1, pc + 1, ta + (pa >= a.size()),
           tb + (pb >= b.size()), tc + (pc >= c.size()), l + 1,
           (get(a, pa) + get(b, pb) + carry) / 10);
    if (std::get<0>(local) < std::get<0>(result)) {
      result = local;
      std::get<1>(result) += char(get(a, pa) + '0');
      std::get<2>(result) += char(get(b, pb) + '0');
      std::get<3>(result) += char(get(c, pc) + '0');
    }
  }
  if (get(a, pa) + carry <= get(c, pc)) {
    auto local = dp(a, b, c, pa + 1, pb, pc + 1, ta + (pa >= a.size()), 0,
                    tc + (pc >= c.size()), l + 1, 0);
    if (std::get<0>(local) < std::get<0>(result)) {
      result = local;
      std::get<1>(result) += char(get(a, pa) + '0');
      std::get<2>(result) += char(get(c, pc) - get(a, pa) - carry + '0');
      std::get<3>(result) += char(get(c, pc) + '0');
    }
  } else {
    auto local = dp(a, b, c, pa + 1, pb, pc + 1, ta + (pa >= a.size()), 0,
                    tc + (pc >= c.size()), l + 1, 1);
    if (std::get<0>(local) < std::get<0>(result)) {
      result = local;
      std::get<1>(result) += char(get(a, pa) + '0');
      std::get<2>(result) += char(10 - get(a, pa) - carry + get(c, pc) + '0');
      std::get<3>(result) += char(get(c, pc) + '0');
    }
  }
  if (get(b, pb) + carry <= get(c, pc)) {
    auto local = dp(a, b, c, pa, pb + 1, pc + 1, 0, tb + (pb >= b.size()),
                    tc + (pc >= c.size()), l + 1, 0);
    if (std::get<0>(local) < std::get<0>(result)) {
      result = local;
      std::get<1>(result) += char(get(c, pc) - get(b, pb) - carry + '0');
      std::get<2>(result) += char(get(b, pb) + '0');
      std::get<3>(result) += char(get(c, pc) + '0');
    }
  } else {
    auto local = dp(a, b, c, pa, pb + 1, pc + 1, 0, tb + (pb >= b.size()),
                    tc + (pc >= c.size()), l + 1, 1);
    if (std::get<0>(local) < std::get<0>(result)) {
      result = local;
      std::get<1>(result) += char(10 - get(b, pb) - carry + get(c, pc) + '0');
      std::get<2>(result) += char(get(b, pb) + '0');
      std::get<3>(result) += char(get(c, pc) + '0');
    }
  }
  auto local = dp(a, b, c, pa + 1, pb + 1, pc, ta + (pa >= a.size()),
                  tb + (pb >= b.size()), 0, l + 1,
                  (get(a, pa) + get(b, pb) + carry) / 10);
  if (std::get<0>(local) < std::get<0>(result)) {
    result = local;
    std::get<1>(result) += char(get(a, pa) + '0');
    std::get<2>(result) += char(get(b, pb) + '0');
    std::get<3>(result) += char((get(a, pa) + get(b, pb) + carry) % 10 + '0');
  }
  return result;
}
int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  int64_t a, b, c;
  char tmp;
  std::cin >> a >> tmp >> b >> tmp >> c;
  std::string sa = std::to_string(a);
  std::string sb = std::to_string(b);
  std::string sc = std::to_string(c);
  auto [l, ra, rb, rc] = dp(sa, sb, sc, 0, 0, 0, 0, 0, 0, 0, 0);
  std::reverse(ra.begin(), ra.end());
  std::reverse(rb.begin(), rb.end());
  std::reverse(rc.begin(), rc.end());
  while (ra.back() == '0') {
    ra.pop_back();
  }
  while (rb.back() == '0') {
    rb.pop_back();
  }
  while (rc.back() == '0') {
    rc.pop_back();
  }
  std::reverse(ra.begin(), ra.end());
  std::reverse(rb.begin(), rb.end());
  std::reverse(rc.begin(), rc.end());
  std::cerr << l << '\n';
  std::cout << ra << '+' << rb << '=' << rc << '\n';
}
