和天下
题号:NC279168
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Panjy 在玩维多利亚 3,他在游戏里统一了世界,他觉得统一天下没有难度,于是想让你做一道题。

给定一个长度为 n 的序列 a,你有一张大小为 n 的图 GG 满足对于两个不同整数 1\le u,v\le n,若 a_u \odot a_v \ge k,则 u, v 之间存在一条边,反之不存在边。

求该图最大连通块的点数。其中 \odot 为按位与运算。


输入描述:

第一行一个整数 T 表示数据组数。

对于每组数据,第一行输入两个正整数 n, k (1\le n\le 2\times 10^5, 0\le k\le 10^{18}),分别表示序列长度及连边最小按位与值。

第二行输入 n 个正整数分别为 a_1,a_2,...,a_n (0\le a_i\le 10^{18})

保证 \sum n\le 2\times 10^5

输出描述:

对于每组数据,输出一个整数,表示最大连通块的大小。
示例1

输入

复制
2
5 1
5 21 1 8 10
5 4
5 3 7 10 15

输出

复制
3
4