"use strict"
function Main(input){
  var I=[],i=0;
  var checkNum=/^\d+/;
  var checkSpace=/ |\n/;
  while(input.length>0){
    if(input.match(checkNum)!==null){
      I[i]=input.match(checkNum)[0];
      input=input.replace(checkNum,"");    
      i++;
      continue;
    }
    input=input.replace(checkSpace,"");
    continue;
  }
  input=I;
  var N=parseInt(input[0]);
  var K=parseInt(input[1]);
  input.shift();
  input.shift();
  var A=[];
  for(let i=0;i<N;i++){
    A[i]=parseInt(input[i]);
  }
  var binaryA=[];
  for(let i=0;i<N;i++){
    binaryA[i]=A[i].toString(2);
    while(binaryA[i].length<41){
      binaryA[i]="0"+binaryA[i];
    }
  }//binaryA[i]は0詰め41桁の二進数
  var binaryKplusOne=(K+1).toString(2);
    while(binaryKplusOne.length<41){
      binaryKplusOne="0"+binaryKplusOne;
  }//binaryKplusOneは0詰め41桁の二進数

  var K_=[];
  var k=0;
  K_[0]=binaryKplusOne.indexOf("1");
  while(true){
    K_[k+1]=binaryKplusOne.indexOf("1",K_[k]+1);
    if(K_[k+1]===-1)break;
    k++;
  }
  K_.pop();
  
  var digSum=[];
  for(let i=0;i<41;i++){
    digSum[i]=0;
    for(let j=0;j<N;j++){
      digSum[i]+=(binaryA[j][i]==="1")?1:0;
    }
  }
  
  var X="";
  var counter=[];
  for(let i=0;i<K_.length;i++){
    X="";
    for(let j=0;j<K_[i];j++){
      X=X+""+binaryKplusOne[j];
    }
    X=X+"0";
    for(let j=K_[i]+1;j<41;j++){
      X=X+((digSum[j]>N-digSum[j])?"0":"1");
    }
    counter[i]=0;
    for(let j=0;j<41;j++){
      counter[i]+=((X[40-j]==="0")?(digSum[40-j]):(N-digSum[40-j]))*Math.pow(2,j);
    }
  }
  console.log(Math.max.apply(null,counter));
}

Main(require("fs").readFileSync("/dev/stdin","utf8"));
