program test
implicit none

integer(8) :: n,k,a(200000),max_a,bits(50)=0,bits_max = 1,ans2(0:50),ruijyou(0:50),base,ans
integer :: i,j

read(*,*) n,k
read(*,*) (a(i),i=1,n)


!2の累乗を計算
ruijyou(0) = 1
do i=1,50
	ruijyou(i) = ruijyou(i-1) * 2
enddo

!bits(i)      下からi桁目のビットが1である数の個数
!(n-bits(i))  下からi桁目のビットが0である数の個数
do i=0,49
	do j=1,n
		if(BTEST(a(j),i)) then
			bits_max = i+1
			bits(i+1) = bits(i+1) + 1
		endif
	enddo
enddo

!K=0のときの値
base = 0
do i=1,50
	base = base + bits(i)*ruijyou(i-1)
enddo

!i桁までの数で、K=0との最大値の差分を計算
ans2(0) = 0
do i=1,50
	ans2(i)= ans2(i-1) + max(0,(n-bits(i))-bits(i))*ruijyou(i-1)
enddo

!まず、K=kのときの値を計算
ans = ans_fixed(k,1,50)

!次に、下から2桁目以上で、Kのi桁目が1の場合、
!(i-1桁目までの最大値) + (i+1以降の桁をfixした場合)を計算
do i=2,50
	if(BTEST(k,i-1))then
		ans = max(ans,ans_fixed(k,i+1,50)+ans2(i-1))
	endif
enddo

write(*,*) base+ans

contains

function ans_fixed(x,j_s,j_e) result(tmp)
	implicit none
	integer(8):: x,tmp
	integer :: j_s,j_e
	
	tmp = 0
	
	do j=j_s,j_e
		if(BTEST(x,j-1))then
			tmp = tmp + ((n-bits(j))-bits(j)) * ruijyou(j-1)
		else
			tmp = tmp
		endif
	enddo
	
	return
	
end function

end program
