#include <bits/stdc++.h>
using namespace std;
string tostring(long long x) {
  string ans = "";
  while (x != 0) {
    int d = x % 10;
    char c = (int)d + 48;
    ans.push_back(c);
    x = x / 10;
  }
  reverse(ans.begin(), ans.end());
  return ans;
}
int dig(int x) {
  long long v = 0;
  if (x == 1) v = 1;
  if (x == 2) v = 10;
  if (x == 3) v = 100;
  if (x == 4) v = 1000;
  if (x == 5) v = 10000;
  if (x == 6) v = 100000;
  if (x == 7) v = 1000000;
  if (x == 8) v = 10000000;
  if (x == 9) v = 100000000;
  if (x == 10) v = 1000000000;
  if (x == 11) v = 10000000000;
  if (x == 12) v = 100000000000;
  return v;
}
long long get_val(string x) {
  long long ans = 0;
  int len = x.length();
  int cnt = len;
  for (int i = 0; i < len; ++i, --cnt) {
    int d = x[i] - 48;
    ans += d * dig(cnt);
  }
  return ans;
}
void solve() {
  long long x, y, s;
  cin >> x >> y;
  s = x + y;
  string sx = tostring(x);
  string sy = tostring(y);
  string ss = tostring(s);
  string buff = "";
  for (int i = 0; i < sx.length(); ++i) {
    if (sx[i] != '0') buff.push_back(sx[i]);
  }
  long long nx = get_val(buff);
  buff.clear();
  for (int i = 0; i < sy.length(); ++i) {
    if (sy[i] != '0') buff.push_back(sy[i]);
  }
  long long ny = get_val(buff);
  buff.clear();
  for (int i = 0; i < ss.length(); ++i) {
    if (ss[i] != '0') buff.push_back(ss[i]);
  }
  long long ns = get_val(buff);
  buff.clear();
  if (nx + ny == ns)
    cout << "YES" << endl;
  else
    cout << "NO" << endl;
}
int main() {
  solve();
  return 0;
}
