import qualified Data.IntSet as S

main = do
  li <- getLine
  let [a,v] = map read $ words li
  li <- getLine
  let [b,w] = map read $ words li
  li <- getLine
  let [t] = map read $ words li
  let ans = compute a v b w t
  putStrLn $ if ans then "YES" else "NO"

type One = (S.IntSet, S.IntSet, Int, Int, Int)

makeOne a v = (S.singleton a, S.empty, v, a, a)

compute :: Int -> Int -> Int -> Int -> Int -> Bool
compute a v b w t = loop t (makeOne a v) (makeOne b w)

loop t (as1,_,_,_,_) (bs1,_,_,_,_)
  | not $ S.null $ S.intersection as1 bs1 = True
loop 0 _ _ = False
loop t a b = loop (pred t) (step a) (step b)

step (as1,as2,v,al,au) = (S.insert al1 $ S.insert au1 as2, as1, v, al1, au1)
  where
    al1 = al - v
    au1 = au + v

{-
最も進んだ位置2か所を常に管理し、
偶数番目の状態と奇数番目の状態で別々にそれを追加する。
共通部分があればTrueを返す
初期状態は必ず交わらない
--
子供が「最適に」動く、という言い方がおかしい。
鬼は捕まえようとするのが最適だが、子は捕まらないように動くのがゲーム上の最適。
しかし例からは、子も「捕まるように動く」でないと辻褄が合わない。
まぁ、子が逃げるように動くと計算が面倒なのでいいか。
-}
