#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#include<bits/stdc++.h>
using namespace std;
// #define int long long
#define fi first
#define se second
#define siz(x) (int)(x.size())
const int maxN=2e5+5;
int lg2(const int &x){return 31 - __builtin_clz(x);}

int n, k, m, cur_trie=0, mx[maxN], nxt[maxN][2], a[maxN];

void add(int s, int id)
{
    int last_id=0;
    for(int i=lg2(s); i>=0; i-=1)
    {
        int xet=(1<<i)&s; if(xet) xet=1;
        if(nxt[last_id][xet]==-1)
        {
            cur_trie++;
            nxt[last_id][xet]=cur_trie;
        }
        mx[nxt[last_id][xet]]=max(id, mx[nxt[last_id][xet]]);
        last_id=nxt[last_id][xet];
    }
}

int query(int s)
{
    int last_id=0, res=-1;
    for(int i=lg2(k); i>=0; i-=1)
    {
        int xet=(1<<i)&s, xet_k=(1<<i)&k;
        if(xet) xet=1;
        if(xet_k) xet_k=1;
        if(xet_k)
        {
            last_id=nxt[last_id][xet^1];
        }
        else
        {
            if(nxt[last_id][xet^1]!=-1) res=max(res, mx[nxt[last_id][xet^1]]);
            last_id=nxt[last_id][xet];
        }
        if(last_id==-1)
        {
            return res;
        }
    }
    return res;
}

void solve()
{
    int ans = -1;
    for(int i=1; i<=n; i+=1)
    {
        add(a[i], i);
        if(query(a[i])==-1) continue;
        else ans=max(ans, i-query(a[i])+1);
    }
    cout<<ans<<'\n';
}

int32_t main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    int test = 1;
    cin>>test;
    while(test--)
    {
        cin>>n>>k;
        cur_trie = 0;
        for(int i=0; i<=n*30; i+=1) nxt[i][1]=nxt[i][0]=-1, mx[i]=-1;
        for(int i=1; i<=n; i+=1) cin>>a[i];
        solve();
    }
}