#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define all(x) x.begin(),x.end()
ll MOD = 1000000007;
ll oo = 1e15;
struct XorBasis {
static const ll LOG = 60;
ll bases[LOG];
void init() {
for (ll i=0;i<LOG;i++) {
bases[i] = 0;
}
}
ll nullity = 0;
void insert(ll x) {
for (ll i=LOG-1;i>=0;i--) {
ll bit = (1ll<<i);
if ( bit&x ) {
if (bases[i]) {
x^=bases[i];
}else {
bases[i] = x;
return;
}
}
}
nullity++;
}
bool can(ll x) {
for (ll i=LOG-1;i>=0;i--) {
ll bit = (1ll<<i);
if ( bit&x ) {
if (bases[i]) {
x^=bases[i];
}else {
return false;
}
}
}
return true;
}
};
void solve() {
XorBasis basis;
basis.init();
ll n,k;cin>>n>>k;
ll a[n];
for (ll i=0;i<n;i++) {
cin>>a[i];
basis.insert(a[i]);
}
ll ans = -1;
for (ll i=0;i<(1ll<<(k/2));i++) {
ll reverse = 0;
ll i2 = i;
for (ll j=0;j<k/2;j++){
reverse = (reverse<<1) + (i2&1);
i2/=2;
}
ll ch1 = (reverse<<(k/2+1)) + (1ll<<k/2) + i;
ll ch2 = (reverse<<(k/2+1)) + i;
ll ch3 = (reverse<<(k/2)) + i;
if (k&1) {
if (basis.can(ch1)) {
ans+=(1ll<<basis.nullity);
ans%=MOD;
}
if (basis.can(ch2)) {
ans+=(1ll<<basis.nullity);
ans%=MOD;
}
}else {
if (basis.can(ch3)) {
ans+=(1ll<<basis.nullity);
ans%=MOD;
}
}
}
cout<<ans<<endl;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
bool calc = false;
// calc = true;
if(calc){
cout<<(1ll<<(20))<<endl;
return 0;
}
ll t=1;
cin>>t;
while(t--) {
solve();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCgpsbCBNT0QgPSAxMDAwMDAwMDA3OwoKbGwgb28gPSAxZTE1OwoKc3RydWN0IFhvckJhc2lzIHsKICAgIHN0YXRpYyBjb25zdCBsbCBMT0cgPSA2MDsKICAgIGxsIGJhc2VzW0xPR107CiAgICB2b2lkIGluaXQoKSB7CiAgICAgICAgZm9yIChsbCBpPTA7aTxMT0c7aSsrKSB7CiAgICAgICAgICAgIGJhc2VzW2ldID0gMDsKICAgICAgICB9CiAgICB9CiAgICBsbCBudWxsaXR5ID0gMDsKICAgIHZvaWQgaW5zZXJ0KGxsIHgpIHsKICAgICAgICBmb3IgKGxsIGk9TE9HLTE7aT49MDtpLS0pIHsKICAgICAgICAgICAgbGwgYml0ID0gKDFsbDw8aSk7CiAgICAgICAgICAgIGlmICggYml0JnggKSB7CiAgICAgICAgICAgICAgICBpZiAoYmFzZXNbaV0pIHsKICAgICAgICAgICAgICAgICAgICB4Xj1iYXNlc1tpXTsKICAgICAgICAgICAgICAgIH1lbHNlIHsKICAgICAgICAgICAgICAgICAgICBiYXNlc1tpXSA9IHg7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIG51bGxpdHkrKzsKICAgIH0KICAgIGJvb2wgY2FuKGxsIHgpIHsKICAgICAgICBmb3IgKGxsIGk9TE9HLTE7aT49MDtpLS0pIHsKICAgICAgICAgICAgbGwgYml0ID0gKDFsbDw8aSk7CiAgICAgICAgICAgIGlmICggYml0JnggKSB7CiAgICAgICAgICAgICAgICBpZiAoYmFzZXNbaV0pIHsKICAgICAgICAgICAgICAgICAgICB4Xj1iYXNlc1tpXTsKICAgICAgICAgICAgICAgIH1lbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn07Cgp2b2lkIHNvbHZlKCkgewogICAgWG9yQmFzaXMgYmFzaXM7CiAgICBiYXNpcy5pbml0KCk7CiAgICBsbCBuLGs7Y2luPj5uPj5rOwogICAgbGwgYVtuXTsKICAgIGZvciAobGwgaT0wO2k8bjtpKyspIHsKICAgICAgICBjaW4+PmFbaV07CiAgICAgICAgYmFzaXMuaW5zZXJ0KGFbaV0pOwogICAgfQogICAgbGwgYW5zID0gLTE7CiAgICBmb3IgKGxsIGk9MDtpPCgxbGw8PChrLzIpKTtpKyspIHsKICAgICAgICBsbCByZXZlcnNlID0gMDsKICAgICAgICBsbCBpMiA9IGk7CiAgICAgICAgZm9yIChsbCBqPTA7ajxrLzI7aisrKXsKICAgICAgICAgICAgcmV2ZXJzZSA9IChyZXZlcnNlPDwxKSArIChpMiYxKTsKICAgICAgICAgICAgaTIvPTI7CiAgICAgICAgfQogICAgICAgIGxsIGNoMSA9IChyZXZlcnNlPDwoay8yKzEpKSArICgxbGw8PGsvMikgKyBpOwogICAgICAgIGxsIGNoMiA9IChyZXZlcnNlPDwoay8yKzEpKSArICBpOwogICAgICAgIGxsIGNoMyA9IChyZXZlcnNlPDwoay8yKSkgKyAgaTsKICAgICAgICBpZiAoayYxKSB7CiAgICAgICAgICAgIGlmIChiYXNpcy5jYW4oY2gxKSkgewogICAgICAgICAgICAgICAgYW5zKz0oMWxsPDxiYXNpcy5udWxsaXR5KTsKICAgICAgICAgICAgICAgIGFucyU9TU9EOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChiYXNpcy5jYW4oY2gyKSkgewogICAgICAgICAgICAgICAgYW5zKz0oMWxsPDxiYXNpcy5udWxsaXR5KTsKICAgICAgICAgICAgICAgIGFucyU9TU9EOwogICAgICAgICAgICB9CiAgICAgICAgfWVsc2UgewogICAgICAgICAgICBpZiAoYmFzaXMuY2FuKGNoMykpIHsKICAgICAgICAgICAgICAgIGFucys9KDFsbDw8YmFzaXMubnVsbGl0eSk7CiAgICAgICAgICAgICAgICBhbnMlPU1PRDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICB9CiAgICBjb3V0PDxhbnM8PGVuZGw7Cn0KCnNpZ25lZCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7Y291dC50aWUoTlVMTCk7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCJyIixzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKI2VuZGlmCgogICAgYm9vbCBjYWxjID0gZmFsc2U7CiAgICAvLyBjYWxjID0gdHJ1ZTsKICAgIGlmKGNhbGMpewogICAgICAgIGNvdXQ8PCgxbGw8PCgyMCkpPDxlbmRsOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgbGwgdD0xOwogICAgY2luPj50OwogICAgd2hpbGUodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KfQ==