#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <deque>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#define p(s) cout<<(s)<<endl
#define REP(i,n,N) for(int i=n;i<N;i++)
#define RREP(i,n,N) for(int i=N-1;i>=n;i--)
#define CK(n,a,b) ((a)<=(n)&&(n)<(b))
#define F first
#define S second
typedef long long ll;
using namespace std;
const ll mod = 1e9+7;

int N, K;
int x[1000010];
//Nimは自由に取れちゃうので, 石を3個だけしか取れないと制限した時
int grundy(int n){
    return n%(K+1);
}
bool Grundy(){
    int g=0;
    for(int i=0; i<N; i++) {
        g^=grundy(x[i]);
    }
    return g == 0;
}

string sente = "YES";//先手の名前
string gote = "NO";//後手の名前

int main(){

    cin>>N>>K;
    string ans=sente;//先手Win

    for(int i=0; i<N; i++){
        cin>>x[i];
    }
    if(Grundy()) ans=gote;

    cout << ans << endl;
}