#include #include #include #include #include #include #include using namespace std; typedef long long ll; int N; int X; int A[200000]; int lx, rx; int la[200000], ra[200000]; // v[i]: left halfがiのlaたち vector v[1<<9]; ll v_cnt[1<<9][1<<9]; ll cnt[1<<9][9]; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout << setprecision(10) << fixed; cin >> N >> X; lx = (X>>9); rx = (X&((1<<9)-1)); for(int i = 0; i < N; i++) { cin >> A[i]; la[i] = (A[i]>>9); ra[i] = (A[i]&((1<<9)-1)); v[la[i]].push_back(ra[i]); v_cnt[la[i]][ra[i]]++; for(int j = 0; j < 9; j++){ if(ra[i] & (1< 0){ tmp += (i|i)*(1<<9); tmp += (k|l); } } } }else{ for(int k = 0; k < (1<<9); k++){ for(int l = 0; l < (1<<9); l++){ if((k^l) < rx || lx > 0){ tmp += (ll)(v_cnt[i][k]*v_cnt[i][l])*(i|i)*(1<<9); tmp += (ll)(v_cnt[i][k]*v_cnt[i][l])*(k|l); } } } } ans += tmp; } for(int i = 0; i < N; i++){ ans -= A[i]; } ans /= 2; for(int i = 0; i < (1<<9); i++){ for(int j = i+1; j < (1<<9); j++){ ll cnt_i = v[i].size(); ll cnt_j = v[j].size(); if((i^j) < lx){ ans += (cnt_i*cnt_j)*(i|j)*(1<<9); for(int k = 0; k < 9; k++){ ll cnt_ok = cnt_i*cnt[j][k]+cnt_j*cnt[i][k]-cnt[j][k]*cnt[i][k]; ans += (ll)(1<