#include <bits/stdc++.h>
using namespace std;
long long ra, rb;
long long put10[20];
int adaugMin = 18;
void bkt(long long a, long long b, long long c, long long t, long long raspA,
         long long raspB, int poz, int adaug, int aZero, int bZero) {
  if (adaug >= adaugMin) {
    return;
  }
  if (a == 0 && b == 0 && c == 0 && t == 0) {
    adaugMin = adaug;
    ra = raspA;
    rb = raspB;
    return;
  }
  if (c == 0) {
    long long prefix = a + b + t;
    int k = 0;
    while (prefix > 0) {
      prefix /= 10;
      k++;
    }
    bkt(0, 0, 0, 0, raspA + put10[poz] * a, raspB + put10[poz] * b, poz,
        adaug + k, aZero, bZero);
  } else if ((a + b + t) % 10 == c % 10) {
    bkt(a / 10, b / 10, c / 10, (a % 10 + b % 10 + t) / 10,
        raspA + put10[poz] * (a % 10), raspB + put10[poz] * (b % 10), poz + 1,
        adaug, aZero + (a == 0), bZero + (b == 0));
  } else {
    if (a == 0 && (a * 10 + (10 + c % 10 - b % 10 - t) % 10 > 0))
      bkt(a * 10 + (10 + c % 10 - b % 10 - t) % 10, b, c, t, raspA, raspB, poz,
          adaug + 1 + aZero, 0, bZero);
    else
      bkt(a * 10 + (10 + c % 10 - b % 10 - t) % 10, b, c, t, raspA, raspB, poz,
          adaug + 1, aZero, bZero);
    if (b == 0 && (b * 10 + (10 + c % 10 - a % 10 - t) % 10 > 0))
      bkt(a, b * 10 + (10 + c % 10 - a % 10 - t) % 10, c, t, raspA, raspB, poz,
          adaug + 1 + bZero, aZero, 0);
    else
      bkt(a, b * 10 + (10 + c % 10 - a % 10 - t) % 10, c, t, raspA, raspB, poz,
          adaug + 1 + bZero, aZero, bZero);
    bkt(a, b, c * 10 + (a % 10 + b % 10 + t) % 10, t, raspA, raspB, poz,
        adaug + 1, aZero, bZero);
  }
}
int main() {
  long long a, b, c;
  scanf("%I64d+%I64d=%I64d", &a, &b, &c);
  put10[0] = 1;
  for (int i = 1; i < 18; i++) put10[i] = put10[i - 1] * 10;
  bkt(a, b, c, 0, 0, 0, 0, 0, 0, 0);
  printf("%I64d+%I64d=%I64d", ra, rb, ra + rb);
  return 0;
}
