#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
// For all linux platforms!
typedef long long __int64;
const int mod = 1000000003 ;
int result, ope[ 55 ] , xorv[ 55 ] [ 35 ] ; bool valid[ 35 ] ;
int dp[ 55 ] [ 35 ] [ 2 ] ;
int main ( )
{
int n; while ( scanf ( "%d %d" , & n, & result) , n)
{
for ( int i = 1 ; i <= n; i++ ) scanf ( "%d" , & ope[ i] ) , ++ ope[ i] ;
for ( int i = 0 ; i < 31 ; i++ ) xorv[ 0 ] [ i] = 0 ;
for ( int i = 1 ; i <= n; i++ )
{
for ( int j = 0 ; j < 31 ; j++ )
xorv[ i] [ j] = xorv[ i - 1 ] [ j] ^ ( ope[ i] & ( 1 << j) ) ;
}
valid[ 31 ] = true ;
for ( int i = 30 ; i >= 0 ; i-- ) valid[ i] = valid[ i + 1 ] && ( xorv[ n] [ i] == ( result & ( 1 << i) ) ) ;
memset ( dp, 0 , sizeof dp) , dp[ 0 ] [ 0 ] [ 0 ] = 1 ;
for ( int i = 1 ; i <= n; i++ )
{
for ( int j = 0 ; j < 31 ; j++ ) for ( int s = 0 ; s < 2 ; s++ )
{
if ( dp[ i - 1 ] [ j] [ s] == 0 ) continue ;
for ( int k = 0 ; k < 31 ; k++ ) if ( ope[ i] & ( 1 << k) )
{
int free , tj, ts;
if ( k > j) free = j, tj = k, ts = ( xorv[ i - 1 ] [ k] ? 1 : 0 ) ;
else
{
int tm = ( k == j ? 0 : ope[ i] & ( 1 << j) ) ;
free = k, tj = j, ts = s ^ ( tm ? 1 : 0 ) ;
}
dp[ i] [ tj] [ ts] = ( ( __int64) dp[ i - 1 ] [ j] [ s] * ( 1 << free ) + dp[ i] [ tj] [ ts] ) % mod;
}
}
}
int ans = 0 ;
for ( int i = 30 ; i >= 0 ; i-- )
{
if ( valid[ i + 1 ] ) ans = ( ans + dp[ n] [ i] [ ( result & ( 1 << i) ) ? 1 : 0 ] ) % mod;
else break ;
}
printf ( "%d\n " , ans) ;
}
return 0 ;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxjc3RkbGliPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRm9yIGFsbCBsaW51eCBwbGF0Zm9ybXMhCnR5cGVkZWYgbG9uZyBsb25nIF9faW50NjQ7Cgpjb25zdCBpbnQgbW9kID0gMTAwMDAwMDAwMzsKaW50IHJlc3VsdCwgb3BlWzU1XSwgeG9ydls1NV1bMzVdOyBib29sIHZhbGlkWzM1XTsKaW50IGRwWzU1XVszNV1bMl07CgppbnQgbWFpbiAoKQp7CiAgICBpbnQgbjsgd2hpbGUgKHNjYW5mKCIlZCAlZCIsICZuLCAmcmVzdWx0KSwgbikKICAgIHsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHNjYW5mKCIlZCIsICZvcGVbaV0pLCArK29wZVtpXTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDMxOyBpKyspIHhvcnZbMF1baV0gPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMzE7IGorKykKICAgICAgICAgICAgICAgIHhvcnZbaV1bal0gPSB4b3J2W2kgLSAxXVtqXSBeIChvcGVbaV0gJiAoMSA8PCBqKSk7CiAgICAgICAgfQogICAgICAgIHZhbGlkWzMxXSA9IHRydWU7CiAgICAgICAgZm9yIChpbnQgaSA9IDMwOyBpID49IDA7IGktLSkgdmFsaWRbaV0gPSB2YWxpZFtpICsgMV0gJiYgKHhvcnZbbl1baV0gPT0gKHJlc3VsdCAmICgxIDw8IGkpKSk7CiAgICAgICAgbWVtc2V0KGRwLCAwLCBzaXplb2YgZHApLCBkcFswXVswXVswXSA9IDE7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAzMTsgaisrKSBmb3IgKGludCBzID0gMDsgcyA8IDI7IHMrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGRwW2kgLSAxXVtqXVtzXSA9PSAwKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgMzE7IGsrKykgaWYgKG9wZVtpXSAmICgxIDw8IGspKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGludCBmcmVlLCB0aiwgdHM7CiAgICAgICAgICAgICAgICAgICAgaWYgKGsgPiBqKSBmcmVlID0gaiwgdGogPSBrLCB0cyA9ICh4b3J2W2kgLSAxXVtrXSA/IDEgOiAwKTsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgdG0gPSAoayA9PSBqID8gMCA6IG9wZVtpXSAmICgxIDw8IGopKTsKICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSA9IGssIHRqID0gaiwgdHMgPSBzIF4gKHRtID8gMSA6IDApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkcFtpXVt0al1bdHNdID0gKChfX2ludDY0KWRwW2kgLSAxXVtqXVtzXSAqICgxIDw8IGZyZWUpICsgZHBbaV1bdGpdW3RzXSkgJSBtb2Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaW50IGFucyA9IDA7CiAgICAgICAgZm9yIChpbnQgaSA9IDMwOyBpID49IDA7IGktLSkKICAgICAgICB7CiAgICAgICAgICAgIGlmICh2YWxpZFtpICsgMV0pIGFucyA9IChhbnMgKyBkcFtuXVtpXVsocmVzdWx0ICYgKDEgPDwgaSkpID8gMSA6IDBdKSAlIG1vZDsKICAgICAgICAgICAgZWxzZSBicmVhazsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCIlZFxuIiwgYW5zKTsKICAgIH0KICAgIHJldHVybiAwOwp9IAo=
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
prog.cpp:15: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
stdout