#include <bits/stdc++.h>#define rep( i , l , r ) for( int i = (l) ; i <= (r) ; ++i )#define per( i , r , l ) for( int i = (r) ; i >= (l) ; --i )#define erep( i , u ) for( int i = head[(u)] ; ~i ; i = e[i].nxt )
using namespace std;
void FileInOut(){
freopen( "evolve.in" , "r" , stdin );
freopen( "evolve.out" , "w" , stdout );
}
inline int _read(){
intx = 0 , f = 1;
char ch = getchar();
while( !isdigit(ch) ){ if( ch == '-' ) f = -1 ; ch = getchar(); }
while( isdigit(ch) ){
x = x * 10 + ch - '0';
ch = getchar();
}
returnx * f;
}
const int maxn = 1000000 + 5;
int a[maxn] , q[50] ;
int main(){
FileInOut();
int N = _read() , M = _read() , f = 1 , r = 0;
rep( i , 1 , N ) a[i] = _read();
long long ans = 0;
for( f = 1 , r = 0 ; f <= N ; ++f ){
if( r < f ){
++r;
rep( i , 0 , 31 ) q[i] += (a[r] >> i & 1);
}
int res = 0;
rep( i , 0 , 31 ) res |= (bool)(q[i]) << i;
for( ; r < N && (res | a[r + 1]) < M ; ){
res |= a[++r];
rep( i , 0 , 31 ) q[i] += (a[r] >> i & 1);
}
ans += (long long)(r - f);
rep( i , 0 , 31 ) q[i] -= (a[f] >> i & 1);
}
cout << ans << endl;
return0;
}