#include<bits/stdc++.h>usingnamespacestd;#define endl "\n";
voidsolve(vector<int>&a,intk){vector<int>a_copy=a;sort(a.begin(),a.end());intn=a.size();vector<int>dp(n,0),parent(n,-1);// good subsequence : All pairs in subsequence have xor >= k.
// dp[i] is the maximum good subsequence ending at i.
// Fact : xor is minimized for adjacent elements in sorted list.
dp[0]=1;for(inti=1;i<n;i++){for(intj=0;j<i;j++){if((a[i]^a[j])>=k){if(dp[i]<=1+dp[j]){dp[i]=1+dp[j];parent[i]=j;}}}}automax_ind=max_element(dp.begin(),dp.end())-dp.begin();if(dp[max_ind]==1){cout<<"-1"<<endl;return;}set<int>take;intnow=max_ind;while(now!=-1){take.insert(a[now]);now=parent[now];}cout<<dp[max_ind]<<endl;for(inti=0;i<n;i++){if(take.find(a_copy[i])!=take.end()){cout<<i+1<<" ";}}cout<<endl;}intmain(){intn,k;cin>>n>>k;vector<int>a(n);for(inti=0;i<n;i++){cin>>a[i];}solve(a,k);return0;}