#include <bits/stdc++.h>
using namespace std;
const int MAXL = 15;
struct block {
  int isPos, l1, l2, l3, u1, u2, u3, n1, n2, n3, lstUpd;
  void set(int IsPos, int L1, int L2, int L3, int U1, int U2, int U3, int N1,
           int N2, int N3, int LstUpd) {
    isPos = IsPos;
    l1 = L1;
    l2 = L2;
    l3 = L3;
    u1 = U1;
    u2 = U2;
    u3 = U3;
    n1 = N1;
    n2 = N2;
    n3 = N3, lstUpd = LstUpd;
  }
};
block dp[MAXL + 2][MAXL + 2][2][9][9][9];
long long A, B, C;
int vals[3][8];
block ans;
int main() {
  int s1, s2, s3;
  string str;
  cin >> str;
  for (int i = str.size() - 1, k = 2, pos = 0; i >= 0; i--) {
    if (str[i] == '=') {
      k--;
      s3 = pos;
      pos = 0;
      continue;
    }
    if (str[i] == '+') {
      k--;
      s2 = pos;
      pos = 0;
      continue;
    }
    vals[k][pos] = str[i] - 48;
    pos++;
    if (!i) s1 = pos;
  }
  dp[0][0][0][0][0][0].isPos = 1;
  for (int l1 = 0; l1 < MAXL; l1++)
    for (int l2 = 0; l2 < MAXL; l2++)
      for (int l3 = 0; l3 < 2; l3++)
        for (int u1 = 0; u1 <= s1; u1++)
          for (int u2 = 0; u2 <= s2; u2++)
            for (int u3 = 0; u3 <= s3; u3++)
              if (dp[l1][l2][l3][u1][u2][u3].isPos)
                for (int v1 = -1; v1 <= (l2 > l1 ? 0 : 9); v1++)
                  for (int v2 = -1; v2 <= (l1 > l2 ? 0 : 9); v2++) {
                    block t;
                    block par = dp[l1][l2][l3][u1][u2][u3];
                    t.set(1, l1, l2, v1 + v2 > 9, u1, u2, u3, v1, v2,
                          (v1 + v2) % 10, dp[l1][l2][l3][u1][u2][u3].lstUpd);
                    if (v1 == -1 && v2 == -1) continue;
                    if (v1 != -1)
                      t.l1++;
                    else
                      t.n1 = 0;
                    if (v2 != -1)
                      t.l2++;
                    else
                      t.n2 = 0;
                    t.n3 = (t.n1 + t.n2 + l3) % 10;
                    t.l3 = (t.n1 + t.n2 + l3) / 10;
                    int curUpd = max(t.l1, t.l2);
                    dp[t.l1][t.l2][t.l3][u1][u2][t.u3].set(1, l1, l2, l3, u1,
                                                           u2, t.u3, t.n1, t.n2,
                                                           t.n3, t.lstUpd);
                    if (vals[0][u1] == v1)
                      dp[t.l1][t.l2][t.l3][u1 + 1][u2][t.u3].set(
                          1, l1, l2, l3, u1, u2, t.u3, t.n1, t.n2, t.n3,
                          t.lstUpd);
                    if (vals[1][u2] == v2)
                      dp[t.l1][t.l2][t.l3][u1][u2 + 1][t.u3].set(
                          1, l1, l2, l3, u1, u2, t.u3, t.n1, t.n2, t.n3,
                          t.lstUpd);
                    if (vals[0][u1] == v1 && vals[1][u2] == v2)
                      dp[t.l1][t.l2][t.l3][u1 + 1][u2 + 1][t.u3].set(
                          1, l1, l2, l3, u1, u2, t.u3, t.n1, t.n2, t.n3,
                          t.lstUpd);
                    if (!(curUpd == max(l1, l2) && vals[2][t.u3] == 0 &&
                          t.n3 == 0)) {
                      if (vals[1][u2] == v2 && vals[2][t.u3] == t.n3)
                        dp[t.l1][t.l2][t.l3][u1][u2 + 1][t.u3 + 1].set(
                            1, l1, l2, l3, u1, u2, t.u3, t.n1, t.n2, t.n3,
                            curUpd);
                      if (vals[0][u1] == v1 && vals[2][t.u3] == t.n3)
                        dp[t.l1][t.l2][t.l3][u1 + 1][u2][t.u3 + 1].set(
                            1, l1, l2, l3, u1, u2, t.u3, t.n1, t.n2, t.n3,
                            curUpd);
                      if (vals[2][t.u3] == t.n3)
                        dp[t.l1][t.l2][t.l3][u1][u2][t.u3 + 1].set(
                            1, l1, l2, l3, u1, u2, t.u3, t.n1, t.n2, t.n3,
                            curUpd);
                      if (vals[0][u1] == v1 && vals[1][u2] == v2 &&
                          vals[2][t.u3] == t.n3)
                        dp[t.l1][t.l2][t.l3][u1 + 1][u2 + 1][t.u3 + 1].set(
                            1, l1, l2, l3, u1, u2, t.u3, t.n1, t.n2, t.n3,
                            curUpd);
                    }
                  }
  long long A = 0, B = 0, C = 0;
  int minL = 100;
  for (int l1 = 0; l1 < MAXL; l1++)
    for (int l2 = 0; l2 < MAXL; l2++)
      for (int l3 = 0; l3 < 2; l3++)
        if (dp[l1][l2][l3][s1][s2][s3].isPos)
          if (l1 + l2 + max(l1, l2) + l3 < minL) {
            if (l3)
              C = pow(10.0, max(l1, l2));
            else
              C = 0;
            ans = dp[l1][l2][l3][s1][s2][s3];
            minL = l1 + l2 + max(l1, l2) + l3;
          }
  for (;;) {
    A += pow(10.0, ans.l1) * ans.n1;
    B += pow(10.0, ans.l2) * ans.n2;
    C += pow(10.0, max(ans.l1, ans.l2)) * ans.n3;
    ans = dp[ans.l1][ans.l2][ans.l3][ans.u1][ans.u2][ans.u3];
    if (!(ans.l1 != 0 || ans.l2 != 0 || ans.l3 != 0 || ans.u1 != 0 ||
          ans.u2 != 0 || ans.u3 != 0 || ans.n1 != 0 || ans.n2 != 0 ||
          ans.n3 != 0))
      break;
  }
  cout << A << "+" << B << "=" << C;
  return 0;
}
