{-# OPTIONS_GHC -O2 #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE Strict #-}
{-# LANGUAGE StrictData #-}
import qualified Data.Vector.Unboxed as VU
import qualified Data.Vector.Unboxed.Mutable as VUM
import Data.Array.Unboxed
import Data.Array.ST
import qualified Data.ByteString.Char8 as BS
import Control.Monad
import Data.List
import Data.Char

main :: IO ()
main = do
    (a,b,c,d) <- (\vec -> (vec VU.! 0, vec VU.! 1, vec VU.! 2, vec VU.! 3)) . VU.unfoldrN 4 (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine
    let (xx,zz) = (c `div` b,c `mod` b)
        (yy,ww) = (a `div` d,a `mod` d)
    putStrLn $ if xx < yy then "Yes"
        else if xx == yy && ww /= 0 then "Yes"
        else if xx == yy + 1 && zz == 0 then "Yes"
        else "No"