#pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include<bits/stdc++.h> using namespace std; typedef unsigned long long ull; int main(){ int n; ull a[200000],b; cin>>n>>b; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); int d=bit_width(b)-1,cnt=0; ull dp[60]; for(int i=0;i<d;i++) dp[i]=1ll<<i+1; for(int i=0;i<n;i++){ int tmp=bit_width(a[i])-1; if(tmp<d){ cnt++; b^=a[i]; }else if(tmp==d) dp[d]=1; for(int j=0;j<tmp;j++) if(~a[i]>>j&1) dp[tmp]|=dp[j]; if(tmp==d){ if(dp[d]>>bit_width(b^a[i])&1){ cout<<cnt+1<<endl; return 0; } } } cout<<cnt<<endl; }