from math import sqrt,sin,cos,tan,ceil,radians,floor,gcd,exp,log,log10,log2,factorial,fsum
from heapq import heapify, heappop, heappush
from bisect import bisect_left, bisect_right
from copy import deepcopy
import copy
import random
from random import randrange
from collections import deque,Counter,defaultdict
from itertools import permutations,combinations
from decimal import Decimal,ROUND_HALF_UP
#tmp = Decimal(mid).quantize(Decimal('0'), rounding=ROUND_HALF_UP)
from functools import lru_cache, reduce
#@lru_cache(maxsize=None)
from operator import add,sub,mul,xor,and_,or_,itemgetter
import sys
input = sys.stdin.readline
# .rstrip()
INF = 10**18
mod1 = 10**9+7
mod2 = 998244353

#DecimalならPython
#再帰ならPython!!!!!!!!!!!!!!!!!!!!!!!!!!


'''
任意の数だけ飲めるわけじゃないのか
グランディ数だな
任意の数飲めれば二ム和、飲めなければグランディ数
Kが小さいから、前計算できる
いや、飲める量は区間をもってるからグランディ数前計算はきついんじゃ
O(10^6*K)になるような
ここを工夫しないといけない
Mexを高速に処理できればいいから
mapで、出てきたやつを消せばいい
それで、0に近いやつ
ただ、グランディ数って連続性あるよな
一個飛んだりはしない
下には飛ぶか
規則性ありそう
012..K 012..K ..ってなりそう
A%(K+1)
'''

N,K = map(int, input().split())
A = list(map(int, input().split()))

x = A[0]%(K+1)
for i in range(1,N):
    x ^= A[i]%(K+1)

if x == 0:
    print('NO')
else:
    print('YES')