#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:16777216")
using namespace std;
int a, b, c, d, i, j, n, m, k, al, ar, bl, br;
int dp[101][101][2];
inline int good(int a, int b, int c) {
  if (!a && !b) return 1;
  if (dp[a][b][c] != -1) return dp[a][b][c];
  if (!c) {
    if (!a) return dp[a][b][c] = 0;
    if (good(a - 1, b, 1))
      return dp[a][b][c] = 1;
    else
      return dp[a][b][c] = 0;
  } else {
    if (!b)
      return dp[a][b][c] = 0;
    else if (good(a, b - 1, 0))
      return dp[a][b][c] = 1;
    else if (b > 1 && good(a, b - 2, 0))
      return dp[a][b][c] = 1;
    else
      return dp[a][b][c] = 0;
  }
}
inline bool match(int a, int b) {
  if (good(a, b, 0) || good(a, b, 1))
    return 1;
  else
    return 0;
}
int main() {
  memset(dp, -1, sizeof(dp));
  scanf("%d%d%d%d", &al, &ar, &bl, &br);
  if (match(al, br) || match(ar, bl))
    printf("YES\n");
  else
    printf("NO\n");
}
