#include <bits/stdc++.h>
using namespace std;
template <typename T>
void Read(T &x) {
  char ch;
  bool neg = 0;
  x = 0;
  while (!isdigit(ch = getchar()) && ch != '-')
    ;
  if (ch == '-') {
    neg = 1;
    ch = getchar();
  }
  do {
    x = x * 10 + ch - 48;
  } while (isdigit(ch = getchar()));
  if (neg) x = -x;
  return;
}
template <typename T>
void Write(T x) {
  char ch[32];
  int cnt = 0;
  bool neg = 0;
  if (x < 0) {
    neg = 1;
    x = -x;
  }
  do {
    ch[++cnt] = x % 10 + 48;
    x /= 10;
  } while (x);
  if (neg) putchar('-');
  for (int i = (cnt); i >= (1); --i) putchar(ch[i]);
}
template <typename T>
void Writeln(T x) {
  Write(x);
  putchar('\n');
}
template <typename T>
void Writesp(T x) {
  Write(x);
  putchar(' ');
}
int k[4];
void Enter() {
  Read(k[1]);
  Read(k[2]);
  Read(k[3]);
}
bool cmp(int x, int y) { return x > y; }
void Solve() {
  sort(k + 1, k + 4);
  if (k[1] == 1) {
    printf("YES");
    return;
  }
  if (k[1] == k[2] && k[2] == k[3] && k[1] == 3) {
    printf("YES");
    return;
  }
  if (k[1] == 2 && k[2] == 4 && k[3] == 4) {
    printf("YES");
    return;
  }
  if (k[2] > 3 && k[3] > 3) {
    printf("NO");
    return;
  }
  if (k[3] > 3) {
    if (k[1] == 2 && k[2] == 2) {
      printf("YES");
      return;
    }
    printf("NO");
    return;
  } else {
    if (k[1] == 2 && k[2] == 2) {
      printf("YES");
      return;
    }
    if (k[2] == 2 && k[3] == 2) {
      printf("YES");
      return;
    }
    if (k[1] == 2 && k[3] == 2) {
      printf("YES");
      return;
    }
    printf("NO");
  }
}
int main(int argc, char const *argv[]) {
  Enter();
  Solve();
  return 0;
}
