#include <bits/stdc++.h>
using namespace std;
#define ll unsigned long long
#define fo(i,a,b) for(int i=a;i<b;i++)

vector<ll>a(64);

int find(int x){
    if(a[x]!=x){
        a[x]=find(a[x]);
    }
    return a[x];
}

void arrage_sum(int x,int y){
    x=find(x);
    y=find(y);
    if(x!=y){
        a[x]=a[y];
    }
}


int main() {
    ll n;
    cin>>n;
    while(n--){
        ll m;
        cin>>m;
        vector<vector<int>>vv(64);//记录0到63位上为一的数的下标;
        vector<ll>v(m);
        fo(i,0,64)a[i]=i;//初始化并查集
        fo(i,0,m){
            cin>>v[i];
            vector<ll>b;//记录每个数的二进制位数为一的数
            for(int j=0;j<64;j++){
                if((v[i]>>j)&1){
                    vv[j].emplace_back(i);
                    b.emplace_back(j);
                }
            }
            if(b.size()>1){
                fo(k,1,b.size()){
                    arrage_sum(b[k-1],b[k]);
                }
            }
        }
        fo(i,0,64){
            int x=find(i);
            if(x!=i){
                fo(j,0,vv[i].size()){
                    vv[x].emplace_back(vv[i][j]);
                }
                sort(vv[x].begin(),vv[x].end());
            }
        }
        int ans=0;
        fo(i,0,64){
            ll flag=0;
            if(vv[i].size()>1){
                fo(j,1,vv[i].size()){
                    if(vv[i][j]==vv[i][j-1]){
                        flag++;
                    }
                }
            }
            ans=max(ans,int(vv[i].size()-flag));
        }
        // fo(i,0,64)cout<<a[i]<<" ";
        // fo(i,0,64){
        //     fo(j,0,vv[i].size()){
        //         cout<<vv[i][j]<<" ";
        //     }
        //     cout<<'\n';
        // }
        cout<<ans<<'\n';
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

本体