#include using namespace std; typedef long long int ll; #define _overload3(_1, _2, _3, name, ...) name #define _rep(i, n) repi(i, 0, n) #define repi(i, a, b) for (ll i = ll(a); i < ll(b); ++i) #define rep(...) _overload3(__VA_ARGS__, repi, _rep, )(__VA_ARGS__) #define rrep(i, a, n) for (ll i = n - 1; i >= a; i--) #define LINF (1LL << 60) #define INF (1 << 30) #define fs first #define sc second #define ALL(a) a.begin(), a.end() template void chmin(T& a, T b) { if (a > b) a = b; } template void chmax(T& a, T b) { if (a < b) a = b; } struct edge { ll to, cost; edge(ll e_to, ll e_cost) : to(e_to), cost(e_cost) {} }; typedef vector> Graph; int main() { ll N, K; cin >> N >> K; vector A(N); rep(i, N) cin >> A[i]; vector G(N); rep(i, N) G[i] = A[i] % (K + 1); ll xor_G = 0; rep(i, N) xor_G ^= G[i]; if (xor_G == 0) cout << "NO" << endl; else cout << "YES" << endl; }