#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include<bits/stdc++.h>
using namespace std;

string s,s1,s2;
vector<int>v,v1,v2,v3;
//long long int i,j,k,l,m,n,p,q,z,sum,cnt,mn,mx,t,x,y,mod=1000000007,diff;
//long long int a[100+10],b[100+10];
long long int a[200000+10],pre[200000+10],b[200000+10],suf[200000+10],col[200000+10],last[200000+10],ans[200000+10];
vector<pair<long long int,long long int>> p1,p2;
vector<pair<long long int,pair<long long int,long long int>>> p3;
multiset<long long int> set1[200000+10],set2;
map<long long int, long long int> m1,m2;

//char c;

long long ll_min(long long x,long long y)
{
    if(x>y)
        return y;
    else
        return x;
}

long long ll_max(long long x,long long y)
{
    if(x>y)
        return x;
    else
        return y;
}

long long int brute_force()
{
    return 0;
}

long long int factorial(int n)
{
    long long int M = 1000000007;
 
    long long int f = 1;
    for (int i = 1; i <= n; i++)
        f = (f*i) % M;  // Now f never can
                        // exceed 10^9+7
    return f;
}

int main()
{
    long long int i,j,k,l,m,n,p,q,r,z,sum,cnt,mn,mx,t,x,y,mod=1000000007,diff,c1,c2,c3,c4;
    double f;
    cin>>t;
    //t=1;
    for(z=1;z<=t;z++)
    {
        cin>>n;
        for(i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        p=a[1];
        for(i=2;i<=n;i++)
        {
            p=p&a[i];
        }
        cnt=0;
        for(i=1;i<=n;i++)
        {
            if(a[i]==p)
            {
                cnt++;
            }
        }
        
        q=(cnt)*(cnt-1)/2;
        q=q%mod;
        q=q*factorial(2);
        q=q%mod;
        q=q*factorial(n-2);
        q=q%mod;
        cout<<q<<endl;
    }
    //end of all test cases
    return 0;
}