# include # define rep(i, n) for(int i=0, i##_len=(n); i=0; --i) # define rreps(i, n) for(int i=((int)(n)); i>0; --i) # define range_for(i, b, e) for(int i=(b), i##_len=(e); i<=i##_len; ++i) # define ALL(x) (x).begin(), (x).end() # define RALL(x) (x).rbegin(), (x).rend() # define pb push_back # define len(x) ((int)(x).size()) # define optimize_cin() cin.tie(0); ios::sync_with_stdio(false) # define debug(x) std::cerr<<#x<<": "<<(x)< inline constexpr bool InRange(const Type& x, const Type& i, const Type& a) { return (i <= x) && (x <= a); } templatebool chmax(Integer &a, const Integer &b) { if (abool chmin(Integer &a, const Integer &b) { if (bbool IsOdd(Integer &n) { return n & 1; } templatebool IsEven(Integer &n) { return !(n & 1); } int ctoi(const char c) { return ('0' <= c && c <= '9') ? (c - '0') : -1; } string YesNo(bool b) { return b ? "Yes" : "No"; } string YESNO(bool b) { return b ? "YES" : "NO"; } string yesno(bool b) { return b ? "yes" : "no"; } static const lint MOD9 = (lint)1e9+7; int dy[4] = {0, 1, 0, -1}; int dx[4] = {1, 0, -1, 0}; // 整数の桁数を返す ( log(N) ) template Integer GetDigit(Integer n) { Integer d = 0; while (n) { n /= 10; d++; } return d; } // 素数かどうかを返す ( O(sqrt(N)) ) template constexpr bool IsPrime(const Integer n) noexcept { if (n < 4) return n == 2 || n == 3; if (n % 2 == 0 || n % 3 == 0 || (n % 6 != 1 && n % 6 != 5)) return false; for (Integer i = 5; i * i <= n; i += 6) if (n % i == 0 || n % (i + 2) == 0) return false; return true; } int main() { vector X(4); rep (i, 4) { cin >> X[i]; } sort(ALL(X)); rep (i, 3) { if (X[i+1] - X[i] != 1) { cout << "No" << "\n"; return 0; } } cout << "Yes" << "\n"; return 0; }