// inputに入力データ全体が入る
function Main(input) {
    // 1行目がinput[0], 2行目がinput[1], …に入る
    input = input.split("\n");
    var L1 = input[0].split(' ')
    var N = parseInt(L1[0], 10)
    var K = parseInt(L1[1], 10)
    var L2 = input[1].split(" ");
    var list = []
    for (var i = 0; i < N; i++) {
        var l = parseInt(L2[i], 10)
        list.push(l)
    }
    if (K === 0) {
        console.log(list.sort((a, b) => a - b)[N - 1])
        return;
    }
    var list2 = []
    var bitK = K.toString(2)
    var start = '1'
    for (var i = 1; i < bitK.length; i++) {
        start += '0'
    }
    for (var i = parseInt(start, 2); i <= K; i++) {
        var tmp = list.reduce((prev, current) => {
            return prev + (current ^ i)
        }, 0)
        list2.push(tmp)
    }

    console.log(list2.sort((a, b) => a - b)[list2.length - 1])
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));