#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();
    }
}