{-# OPTIONS_GHC -O2 -funbox-strict-fields #-}
import qualified Data.ByteString.Char8 as BC
import           Data.Maybe            (fromJust)

main :: IO ()
main = do
  [a, b, c, d] <- map readInt . BC.words <$> BC.getLine
  putStrLn $ if solve a b c d then "Yes" else "No"

solve :: Int -> Int -> Int -> Int -> Bool
solve a b c d
  | abs (a - c) <= d = True
  | abs (a - b) <= d && abs (b - c) <= d = True
  | otherwise = False

readInt :: BC.ByteString -> Int
readInt = fst . fromJust . BC.readInt
