#include<bits/stdc++.h>
using namespace std;

int main() {
 int t;
 cin>>t;
 while(t--){
     int n,b,c;
     cin>>n>>b;
     unordered_map<int,int> mp;
     unordered_map<int,int> present;
     for(int i=0;i<n;i++){
         cin>>c;
         mp[c]++;
         present[c]=1;
     }
     if(n==1){
         cout<<1<< " " <<0<<endl;
         continue;
     }
     int sol=0;
     int changes = 0;
     for(auto it: mp){
         if(it.second==n){
             sol=n;
             break;
         }
         if(it.second>=sol){
             sol=it.second;
         }
     }
     if(b==0){
         cout<< sol << " " << changes << endl;
         continue;
     }
     for(auto it:mp){
         if(present[(it.first)^b]==1){
             if(it.second+mp[(it.first)^b]>sol){
                 sol=it.second + mp[(it.first)^b];
                 changes=min(it.second,mp[(it.first)^b]);
             }
             else if(it.second + mp[(it.first)^b]==sol){
                 if(min(it.second,mp[(it.first)^b]) < changes){
                     changes = min(it.second, mp[(it.first)^b]);
                 }
             }
         }
     }
     
     cout<<sol<<" "<<changes<<endl;
     
     }
     return 0;
 }