#include<iostream>
#include<vector>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
using namespace std;

int n , k ;
long long a[100001] ;
vector<int> zp ;
long long sum ;

void S( )
    {
    cin >> n >> k ;
    for ( int i = 1 ; i <= n ; i++ )
        {
        cin >> a[i] ;
        if ( a[i] > 0 ) sum += n - i + 1 ;
        else zp.push_back( i ) ;
        }
    }

void E1( )
    {
    long long ans = 0 ;
    for ( int i = 1 ; i <= n ; i++ )
        {
        int mans = 0 ;
        int c = 0 ;
        for ( int j = i ; j <= n ; j++ )
            {
            c = c | a[j] ;
            if ( c >= k ) { mans++ ; mans += n - j ; j = n + 1 ; }
            }
        ans += mans ;
        }
    cout << ans << endl ;
    }

void E2( )
    {
    long long ans = 0 ;
    for ( int i = 1 ; i <= n ; i++ )
        {
        if ( a[i] > 0 ) ans += n - i + 1 ;
        else
            {
            int br = 0 , j = i ;
            while ( a[j] == 0 )
                {
                j++ ;
                if ( j > n ) break ;
                }
            ans += (j - i + 1)*(n - j + 1)  ;
            i = j ;
            }
        }
    cout << ans << endl ;
    }

/*void E2( )
    {
    long long ans = 0 ;
    for ( int i = 0 ; i < zp.size() ; i++ )
        {
        int j = zp[i] ;
        while ( a[j] == 0 )
            {
            j++ ;
            if ( j > n ) break ;
            }
        ans += n - j + 1 ;
        }
    ans += sum ;
    cout << ans << endl ;
    }*/

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);cout.tie(NULL);
    S( ) ;

    if ( k > 1 ) E1( ) ;
    else E2( ) ;
    return 0 ;
}
