Problem:
Score : 200 points

Problem Statement

Takahashi and Aoki will have a battle using their monsters.

The health and strength of Takahashi's monster are A and B, respectively, and those of Aoki's monster are C and D, respectively.

The two monsters will take turns attacking, in the order Takahashi's, Aoki's, Takahashi's, Aoki's, ...
Here, an attack decreases the opponent's health by the value equal to the attacker's strength.
The monsters keep attacking until the health of one monster becomes 0 or below. The person with the monster whose health becomes 0 or below loses, and the other person wins.

If Takahashi will win, print Yes; if he will lose, print No.

Constraints

1 \leq A,B,C,D \leq 100

All values in input are integers.

Input

Input is given from Standard Input in the following format:

A B C D

Output

If Takahashi will win, print Yes; if he will lose, print No.

Sample Input 1

10 9 10 10

Sample Output 1

No

First, Takahashi's monster attacks Aoki's monster, whose health is now 10-9=1.

Next, Aoki's monster attacks Takahashi's monster, whose health is now 10-10=0.

Takahashi's monster is the first to have 0 or less health, so Takahashi loses.

Sample Input 2

46 4 40 5

Sample Output 2

Yes

Solution in Haskell (GHC 8.8.3) (judge verdict: Accepted)

import           Control.Monad.ST
import qualified Data.ByteString.Char8        as B
import qualified Data.Vector.Unboxed          as U
import qualified Data.Vector.Algorithms.Radix as U

main :: IO ()
main = do
  [a, b, c, d] <- readInts
  putStrLn $ solve a b c d

solve :: Int -> Int -> Int -> Int -> String
solve a b c d = go a b c d True
  where
    go a b c d taka
      | a <= 0       = "No"
      | c <= 0       = "Yes"
      | taka == True = go a b (c - b) d False
      | otherwise    = go (a - d) b c d True

readInts :: IO [Int]
readInts = map read . words <$> getLine

readIntN :: Int ->  IO (U.Vector Int)
readIntN n = U.unfoldrN n (B.readInt . B.dropWhile ((==) ' ')) <$> B.getLine

radixSort :: U.Vector Int -> U.Vector Int
radixSort xs = runST $ do
  mxs <- U.thaw xs
  U.sort mxs
  U.freeze mxs