#include using namespace std; #define ld long double #define F first #define S second #define Lnode 2*node+1 #define Rnode 2*node+2 #define MID (l+r>>1) #define el '\n' #define coutf(x) for(auto v:(x)) cout<>v; #define all(x) x.begin(),x.end() #define ll long long #define sz(x) (int)x.size() #define pi pair #define pii pair> #define vi vector using ull = unsigned long long; const int N=32*200005; int trie[N][2]; int cnt[N]; int nodecnt; void prepare() { trie[0][0]=trie[0][1]=-1; cnt[0]=-1; nodecnt=1; } ll insert(int n,int idx) { int node=0; for (int i=30;i>=0;i--) { int bit=((n>>i)&1LL); if (trie[node][bit]==-1) { trie[node][bit]=nodecnt; trie[nodecnt][0]=trie[nodecnt][1]=-1; cnt[nodecnt] = -1; nodecnt++; } node=trie[node][bit]; cnt[node]=idx; } } ll mx(ll n,ll k) { int node=0; ll num=0; for (int i=30;i>=0;i--) { int bit=((n>>i)&1LL); if (trie[node][1^bit]!=-1) { num|=(1LL<=k)return cnt[node]; } if (num>=k) return cnt[node]; return -1; } void solve() { int n,k; cin>>n>>k; vectorar(n); for (int i=0;i>ar[i]; if (k==0) { cout<<1<<"\n"; return; } prepare(); insert(ar[0],0); int ans=INT_MAX; for (int i=1;i> tc; for (int i = 1; i <= tc; i++)solve(); return 0; } /* */