#include<stdio.h>
#include<stdlib.h>
int cmp1(const void *a,const void *b){
return *(int*)a-*(int*)b;
}
int main(){
int a[1000002],n,x;
int i,j,k,lower,upper,flag;
while(scanf("%d%d",&n,&x)!=EOF){
for(i=0;i<n;i++)
scanf("%d",&(a[i]));
qsort(a,n,sizeof(a[0]),cmp1);
for(i=0;i<n;i++)
if(a[i]>=x/2.0){
j=i;
k=j-1;
upper=a[j];
lower=a[k];
break;
}
if((lower+upper)==x)
flag=1;
else flag=0;
while(k>=0&&j<=n-1&&flag==0){
if(lower+upper>x){
lower=a[--k];
flag=0;
}
else if(lower+upper<x)
upper=a[j++],flag=0;
else {
flag=1;
break;
}
}
if(flag)
printf("YES/n");
else printf("NO/n");
}
return 0;
}