import streams, sequtils, strutils, algorithm, math, future, sets, tables, hashes proc `ceilDiv`*[T](x, y: T): T = x div y + ord(x mod y != 0) proc `//=`*(x: var SomeInteger; y: SomeInteger) = x = x div y proc `%=`*(x: var SomeInteger; y: SomeInteger) = x = x mod y var T = stdin.readLine.split.map(parseInt) L = T[0] R = T[1] M = T[2] K = T[3] if K == 0 or M == 1: echo "Yes" elif K * R < M: if L == 0: echo "Yes" else: echo "No" elif K * R == M: echo "Yes" elif K * R > M: if (R - L) * K >= M: echo "Yes" else: echo "No" elif L <= M and M <= R: echo "Yes" elif (L div M) < (R div M): echo "Yes" elif K mod 2 == 0: if ((R + max(L, R-1)) - (L + min(L+1, R))) <= M: echo "Yes" else: echo "No" elif K mod 2 == 1: echo "No" else: echo "No" # elif (L div M) == (R div M): # var # minmod = L mod M # maxmod = R mod M