#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define ll long long int
#define MOD 1000000007
ull countSetBits (ull n)
{
ull count = 0;
while (n) {
count += n & 1;
n >>= 1;
}
return count;
}
ull power(ull x, ull y, ull p)
{
ull res = 1; // Initialize result
x = x % p; // Update x if it is more than or
// equal to p
while (y > 0)
{
// If y is odd, multiply x with result
if (y & 1)
res = (res*x) % p;
// y must be even now
y = y>>1; // y = y/2
x = (x*x) % p;
}
return res;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;cin>>t;ull a[50007];int n;ull ans=1;ull c;ull num;
while(t--){
cin>>n;
ans=1;
int flag=1;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0; i<n-1; i++) {
if((a[i]&a[i+1])!=a[i]) {
cout << "0"<<endl;
flag=0;
break;
}
}
if(flag==0){
continue;
}
for(int i=1;i<=n;i++){
num=a[i]&a[i-1];
c=countSetBits(num);
ans=(ans*power(2,c,MOD))%MOD;
}
cout<<ans<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgbGwgbG9uZyBsb25nIGludCAKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwoKCnVsbCBjb3VudFNldEJpdHMgKHVsbCBuKSAKeyAKICAgIHVsbCBjb3VudCA9IDA7IAogICAgd2hpbGUgKG4pIHsgCiAgICAgICAgY291bnQgKz0gbiAmIDE7IAogICAgICAgIG4gPj49IDE7IAogICAgfSAKICAgIHJldHVybiBjb3VudDsgCn0KCgp1bGwgcG93ZXIodWxsIHgsIHVsbCB5LCB1bGwgcCkgIAp7ICAKICAgIHVsbCByZXMgPSAxOyAgICAgLy8gSW5pdGlhbGl6ZSByZXN1bHQgIAogIAogICAgeCA9IHggJSBwOyAvLyBVcGRhdGUgeCBpZiBpdCBpcyBtb3JlIHRoYW4gb3IgIAogICAgICAgICAgICAgICAgLy8gZXF1YWwgdG8gcCAgCiAgCiAgICB3aGlsZSAoeSA+IDApICAKICAgIHsgIAogICAgICAgIC8vIElmIHkgaXMgb2RkLCBtdWx0aXBseSB4IHdpdGggcmVzdWx0ICAKICAgICAgICBpZiAoeSAmIDEpICAKICAgICAgICAgICAgcmVzID0gKHJlcyp4KSAlIHA7ICAKICAKICAgICAgICAvLyB5IG11c3QgYmUgZXZlbiBub3cgIAogICAgICAgIHkgPSB5Pj4xOyAvLyB5ID0geS8yICAKICAgICAgICB4ID0gKHgqeCkgJSBwOyAgCiAgICB9ICAKICAgIHJldHVybiByZXM7ICAKfQoKCgppbnQgbWFpbigpIHsKIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyAKIGNpbi50aWUoTlVMTCk7CmludCB0O2Npbj4+dDt1bGwgYVs1MDAwN107aW50IG47dWxsIGFucz0xO3VsbCBjO3VsbCBudW07CndoaWxlKHQtLSl7CiAgICBjaW4+Pm47CiAgICBhbnM9MTsKICAgIGludCBmbGFnPTE7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICBjaW4+PmFbaV07CiAgICB9CiAgICBmb3IoaW50IGk9MDsgaTxuLTE7IGkrKykgewoJCWlmKChhW2ldJmFbaSsxXSkhPWFbaV0pIHsKCQkJY291dCA8PCAiMCI8PGVuZGw7CgkJCWZsYWc9MDsKCQkJYnJlYWs7CgkJfQoJfQogICAgCiAgICBpZihmbGFnPT0wKXsKICAgICAgICBjb250aW51ZTsKICAgIH0KICAgIAogICAgZm9yKGludCBpPTE7aTw9bjtpKyspewogICAgICAgIG51bT1hW2ldJmFbaS0xXTsKICAgICAgIGM9Y291bnRTZXRCaXRzKG51bSk7CiAgICAgICBhbnM9KGFucypwb3dlcigyLGMsTU9EKSklTU9EOwogICAgfQogICAgY291dDw8YW5zPDxlbmRsOwp9CgoJcmV0dXJuIDA7Cn0K