#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const ll N=1e5+5;

ll ans;  // 存储每组测试用例的最大连通分量大小

// 并查集(Union-Find)节点结构体:用于管理二进制位的连通关系
struct UF {
    ll rank=0;    // 秩,用于按秩合并,优化合并效率
    UF* root;     // 父节点指针,路径压缩时更新
    ll cnt=0;     // 当前连通分量包含的数字个数
};

vector<UF>a(64);  // 最多64位二进制,每个位置对应一个并查集节点

// 并查集查找根节点(带路径压缩)
// 算法思想:递归查找根节点,同时将当前节点的父节点直接指向根,减少后续查询时间
UF* Root(UF* a){
    if(a->root!=a){  // 非根节点时递归查找
        a->root=Root(a->root);  // 路径压缩:直接指向根节点
    }
    return a->root;  // 返回根节点
}

// 并查集合并两个集合(按秩合并)
// 算法思想:将秩小的集合合并到秩大的集合下,减少树的高度;合并时更新连通分量大小,维护最大值ans
void merge(ll x, ll y) {
	UF* rx = Root(&a[x]);  // 找x对应位的根节点
	UF* ry = Root(&a[y]);  // 找y对应位的根节点
	if (rx == ry) return;  // 同一集合,无需合并

	// 按秩合并:秩小的挂到秩大的下面
	if (rx->rank < ry->rank) {
		rx->root = ry;               // rx的根指向ry
        ry->cnt += rx->cnt;          // 合并连通分量大小
        ans = max(ry->cnt, ans);     // 更新最大连通分量
	}
	else {
		ry->root = rx;               // ry的根指向rx
        rx->cnt += ry->cnt;          // 合并连通分量大小
        ans = max(rx->cnt, ans);     // 更新最大连通分量
		if (rx->rank == ry->rank) {  // 秩相同时,根节点秩+1
			rx->rank++;
		}
	}
}

int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);  // 加速输入输出
    ll T;
    cin>>T;
    while(T--){  // 处理多组测试用例
        ll n;
        cin>>n;
        ans=0;    // 每组测试用例初始化最大连通分量为0
        a.clear();// 清空并查集容器
        a.resize(64);
        // 并查集初始化:每个二进制位的节点根指向自己
        for(ll k=0;k<64;k++){
            a[k].root=&a[k];
        }
        // 遍历每个数字,处理其二进制位的连通关系
        for(ll i=1;i<=n;i++){
            ll w;
            cin>>w;         // 输入当前数字的权重
            ll pre=-1;      // 记录当前数字的前一个有效二进制位
            // 遍历64位二进制位,检查当前位是否为1
            for(ll k=0;k<64;k++){
                ll t=(1LL<<k);  // 构造第k位的掩码(1左移k位)
                if((t&w)>=1){   // 当前数字的第k位为1
                    if(pre==-1){// 第一个有效位:该位的连通分量计数+1
                        Root(&a[k])->cnt++;
                        ans=max(ans,Root(&a[k])->cnt); // 更新最大值
                    }else{      // 非第一个有效位:合并当前位与前一个有效位的集合
                        merge(k,pre);
                    }
                    pre=k;      // 更新前一个有效位为当前位
                }
            }
        }
        cout<<ans<<'\n';  // 输出每组测试用例的最大连通分量大小
    }
	return 0;
}