#include<bits/stdc++.h>
#include<iostream>
using namespace std;
#define fre freopen("input-1.txt","r",stdin),freopen("output-1.txt","w",stdout)
#define abs(x) ((x)>0?(x):-(x))
#define M 1000000007
#define lld signed long long int
#define pp pop_back()
#define ps(x) push_back(x)
#define mpa make_pair
#define pii pair<int,int>
#define fi first
#define se second
#define scan(x) scanf("%d",&x)
#define print(x) printf("%d\n",x)
#define scanll(x) scanf("%lld",&x)
#define printll(x) printf("%lld\n",x)
#define boost ios_base::sync_with_stdio(0)
//vector<int> g[2*100000+5];int par[2*100000+5];
lld dp[1048576+5][22];
int freq[1048576+5];
int d[1000000+5];
int main()
{
// freopen("input-6.txt","r",stdin),
//freopen("output-6.txt","w",stdout);
int t;
cin>>t;
while(t--)
{
int n,x,mask;
cin>>n;
for(int i=1;i<=n;++i)
{
scan(d[i]);
freq[d[i]]++;
}
lld ans=0;
for(int mask=0;mask<(1ll<<20);++mask)
{
dp[mask][0]=freq[mask];
if(mask&1)
dp[mask][0]+=freq[mask^1];
for(int p=1;p<=20;++p)
{
dp[mask][p]=dp[mask][p-1];
if(mask&(1<<p))
{
dp[mask][p]+=dp[mask^(1<<p)][p-1];
}
}
}
for(int i=1;i<=n;++i)
{
ans+=dp[(1ll<<20)-1-d[i]][20];
freq[d[i]]=0;
}
cout<<ans<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZnJlIGZyZW9wZW4oImlucHV0LTEudHh0IiwiciIsc3RkaW4pLGZyZW9wZW4oIm91dHB1dC0xLnR4dCIsInciLHN0ZG91dCkKI2RlZmluZSBhYnMoeCkgKCh4KT4wPyh4KTotKHgpKQojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIGxsZCBzaWduZWQgbG9uZyBsb25nIGludAojZGVmaW5lIHBwIHBvcF9iYWNrKCkKI2RlZmluZSBwcyh4KSBwdXNoX2JhY2soeCkKI2RlZmluZSBtcGEgbWFrZV9wYWlyCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHNjYW4oeCkgc2NhbmYoIiVkIiwmeCkKI2RlZmluZSBwcmludCh4KSBwcmludGYoIiVkXG4iLHgpCiNkZWZpbmUgc2NhbmxsKHgpIHNjYW5mKCIlbGxkIiwmeCkKI2RlZmluZSBwcmludGxsKHgpIHByaW50ZigiJWxsZFxuIix4KQojZGVmaW5lIGJvb3N0IGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCkKLy92ZWN0b3I8aW50PiBnWzIqMTAwMDAwKzVdO2ludCBwYXJbMioxMDAwMDArNV07CmxsZCBkcFsxMDQ4NTc2KzVdWzIyXTsKaW50IGZyZXFbMTA0ODU3Nis1XTsKaW50IGRbMTAwMDAwMCs1XTsKaW50IG1haW4oKQp7Ci8vIGZyZW9wZW4oImlucHV0LTYudHh0IiwiciIsc3RkaW4pLAovL2ZyZW9wZW4oIm91dHB1dC02LnR4dCIsInciLHN0ZG91dCk7CmludCB0OwpjaW4+PnQ7CndoaWxlKHQtLSkKewppbnQgbix4LG1hc2s7CmNpbj4+bjsKZm9yKGludCBpPTE7aTw9bjsrK2kpCnsKc2NhbihkW2ldKTsKZnJlcVtkW2ldXSsrOwp9CmxsZCBhbnM9MDsKZm9yKGludCBtYXNrPTA7bWFzazwoMWxsPDwyMCk7KyttYXNrKQp7CmRwW21hc2tdWzBdPWZyZXFbbWFza107CmlmKG1hc2smMSkKZHBbbWFza11bMF0rPWZyZXFbbWFza14xXTsKZm9yKGludCBwPTE7cDw9MjA7KytwKQp7CmRwW21hc2tdW3BdPWRwW21hc2tdW3AtMV07CmlmKG1hc2smKDE8PHApKQp7CmRwW21hc2tdW3BdKz1kcFttYXNrXigxPDxwKV1bcC0xXTsKfQp9Cn0KZm9yKGludCBpPTE7aTw9bjsrK2kpCnsKYW5zKz1kcFsoMWxsPDwyMCktMS1kW2ldXVsyMF07CmZyZXFbZFtpXV09MDsKfQpjb3V0PDxhbnM8PGVuZGw7Cn0KfQ==