# -*- coding: utf-8 -*-
import array
import bisect
import collections
import fractions
import heapq
import itertools
import math
import re
import string
 
class joshu:
 
  # stdio
  @staticmethod
  def getInt():
    return int(raw_input().strip())
  @staticmethod
  def getInts():
    return [int(i) for i in raw_input().strip().split()]
  @staticmethod
  def getFloat():
    return float(raw_input().strip())
  @staticmethod
  def getFloats():
    return [float(i) for i in raw_input().strip().split()]
  @staticmethod
  def getStr():
    return str(raw_input().strip())
  @staticmethod
  def getStrs():
    return [str(i) for i in raw_input().strip().split()]
 
def main():
  n, k = joshu.getInts()
  if (n + 1) / 2 >= k:
    print('YES')
  else:
    print('NO')
  pass
 
if __name__ == '__main__':
  main() import array array import bisect bisect import collections collections import fractions fractions import heapq heapq import itertools itertools import math math import re re import string string class joshu:
 
  # stdio
  @staticmethod
  def getInt():
    return int(raw_input().strip())
  @staticmethod
  def getInts():
    return [int(i) for i in raw_input().strip().split()]
  @staticmethod
  def getFloat():
    return float(raw_input().strip())
  @staticmethod
  def getFloats():
    return [float(i) for i in raw_input().strip().split()]
  @staticmethod
  def getStr():
    return str(raw_input().strip())
  @staticmethod
  def getStrs():
    return [str(i) for i in raw_input().strip().split()]
  joshu def getInt():
    return int(raw_input().strip())
   getInt return int(raw_input().strip()) int(raw_input().strip()) int raw_input().strip() ().strip () raw_input strip @staticmethod
   getInt staticmethod getInt def getInts():
    return [int(i) for i in raw_input().strip().split()]
   getInts int(i) for i in raw_input().strip().split() for i in raw_input().strip().split() i raw_input().strip().split() ().strip().split ().strip() ().strip () raw_input strip split for i in raw_input().strip().split() int(i) int i return [int(i) for i in raw_input().strip().split()] [int(i) for i in raw_input().strip().split()] @staticmethod
   getInts staticmethod getInts def getFloat():
    return float(raw_input().strip())
   getFloat return float(raw_input().strip()) float(raw_input().strip()) float raw_input().strip() ().strip () raw_input strip @staticmethod
   getFloat staticmethod getFloat def getFloats():
    return [float(i) for i in raw_input().strip().split()]
   getFloats float(i) for i in raw_input().strip().split() for i in raw_input().strip().split() i raw_input().strip().split() ().strip().split ().strip() ().strip () raw_input strip split for i in raw_input().strip().split() float(i) float i return [float(i) for i in raw_input().strip().split()] [float(i) for i in raw_input().strip().split()] @staticmethod
   getFloats staticmethod getFloats def getStr():
    return str(raw_input().strip())
   getStr return str(raw_input().strip()) str(raw_input().strip()) str raw_input().strip() ().strip () raw_input strip @staticmethod
   getStr staticmethod getStr def getStrs():
    return [str(i) for i in raw_input().strip().split()]
  getStrs str(i) for i in raw_input().strip().split() for i in raw_input().strip().split() i raw_input().strip().split() ().strip().split ().strip() ().strip () raw_input strip split for i in raw_input().strip().split() str(i) str i return [str(i) for i in raw_input().strip().split()] [str(i) for i in raw_input().strip().split()] @staticmethod
   getStrs staticmethod getStrs def main():
  n, k = joshu.getInts()
  if (n + 1) / 2 >= k:
    print('YES')
  else:
    print('NO')
  pass
  main n, k = joshu.getInts() n joshu.getInts() joshu.getInts joshu getInts k if (n + 1) / 2 >= k:
    print('YES')
  else:
    print('NO')
   (n + 1) / 2 >= k (n + 1) / 2 n + 1 n 1 2 k print('YES') print 'YES' print('NO') print 'NO' if __name__ == '__main__':
  main() __name__ == '__main__' __name__ '__main__' main() main def main():
  n, k = joshu.getInts()
  if (n + 1) / 2 >= k:
    print('YES')
  else:
    print('NO')
  pass
  def main():
  n, k = joshu.getInts()
  if (n + 1) / 2 >= k:
    print('YES')
  else:
    print('NO')
  pass
  main class joshu:
 
  # stdio
  @staticmethod
  def getInt():
    return int(raw_input().strip())
  @staticmethod
  def getInts():
    return [int(i) for i in raw_input().strip().split()]
  @staticmethod
  def getFloat():
    return float(raw_input().strip())
  @staticmethod
  def getFloats():
    return [float(i) for i in raw_input().strip().split()]
  @staticmethod
  def getStr():
    return str(raw_input().strip())
  @staticmethod
  def getStrs():
    return [str(i) for i in raw_input().strip().split()]
  class joshu:
 
  # stdio
  @staticmethod
  def getInt():
    return int(raw_input().strip())
  @staticmethod
  def getInts():
    return [int(i) for i in raw_input().strip().split()]
  @staticmethod
  def getFloat():
    return float(raw_input().strip())
  @staticmethod
  def getFloats():
    return [float(i) for i in raw_input().strip().split()]
  @staticmethod
  def getStr():
    return str(raw_input().strip())
  @staticmethod
  def getStrs():
    return [str(i) for i in raw_input().strip().split()]
  joshu
# -*- coding: utf-8 -*-
import array
import bisect
import collections
import fractions
import heapq
import itertools
import math
import re
import string
 
class joshu:
 
  # stdio
  @staticmethod
  def getInt():
    return int(raw_input().strip())
  @staticmethod
  def getInts():
    return [int(i) for i in raw_input().strip().split()]
  @staticmethod
  def getFloat():
    return float(raw_input().strip())
  @staticmethod
  def getFloats():
    return [float(i) for i in raw_input().strip().split()]
  @staticmethod
  def getStr():
    return str(raw_input().strip())
  @staticmethod
  def getStrs():
    return [str(i) for i in raw_input().strip().split()]
 
def main():
  n, k = joshu.getInts()
  if (n + 1) / 2 >= k:
    print('YES')
  else:
    print('NO')
  pass
 
if __name__ == '__main__':
  main()