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 L > M: if (L mod M) * K == M: echo "Yes" else: echo "No" elif K mod 2 == 0: if (R + max(R-1, L) - (L + min(L+1, R))) * 2 >= M: echo "Yes" else: echo "No" else: if L <= M and R >= M: echo "Yes" else: echo "No"