import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            int n = Integer.parseInt(sc.nextLine());
            int[] arr = new int[n];
            for (int i = 0; i < n; i++) {
                long m = Long.parseLong(sc.nextLine());
                String str = sc.nextLine();
                arr[i] = f5(str.split(" "));
            }
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }
    }

    private static int f5(String[] arr) {
        // 使用mao保存网络集合,key为网络范围,value为网络中的账号数量
        Map<Long, Integer> netMap = new HashMap<>();

        // 遍历账号
        for (int i = 0; i < arr.length; i++) {
            // 当前账号
            long account = Long.parseLong(arr[i]);
            // 当前网络范围等于当前账号
            long netKey = account;

            // 定义集合用于临时存储需要移除的网络范围,减少循环数量
            List<Long> removeNet = new ArrayList<>();

            // 定义账号数量
            int count = 1;

            // 遍历网络,判断当前账号是否在网络当中
            for (Long net : netMap.keySet()) {
                if ((net & netKey) >= 1) {
                    // 当前账号在网络中,使用按位或运算合并网络,将当前网络的范围扩大.
                    netKey = netKey | net;
                    // 当前网络的账号数量为,当前账号数量加上合并的网络中的账号数量
                    count = count + netMap.get(net);
                    // 移除小范围的网络,减少后续遍历数量
                    removeNet.add(net);
                }
            }

            // 移除小范围的网络
            removeNet.forEach(net -> netMap.remove(net));

            // 添加当前网络范围到集合当中
            netMap.put(netKey, count);
        }

        // 返回网络范围集合当中包含最多网络数量的值
        return netMap.values().stream().max(Integer::compareTo).orElse(1);
    }
}