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

using i64 = int64_t;

#define rep(i, x, y) for (i64 i = i64(x), i##_max_for_repmacro = i64(y); i < i##_max_for_repmacro; ++i)
#define debug(x) #x << "=" << (x)

#ifdef DEBUG
#define _GLIBCXX_DEBUG
#define print(x) std::cerr << debug(x) << " (L:" << __LINE__ << ")" << std::endl
#else
#define print(x)
#endif

const int inf = 1.01e9;
const i64 inf64 = 4.01e18;
const double eps = 1e-9;

template <typename T, typename U>
ostream &operator<<(ostream &os, const pair<T, U> &p) {
    os << "(" << p.first << ", " << p.second << ")";
    return os;
}

template <typename T>
ostream &operator<<(ostream &os, const vector<T> &vec) {
    os << "[";
    for (const auto &v : vec) {
        os << v << ",";
    }
    os << "]";
    return os;
}

template <typename T>
bool chmin(T &a, const T &b) {
    if (a > b) {
        a = b;
        return true;
    }
    return false;
}

template <typename T>
bool chmax(T &a, const T &b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

void solve() {
    //const i64 mod = 1'000'000'007;

    i64 N,K;
    cin >> N >> K;
    vector<i64> A(N);
    rep(i,0,N){
        cin >> A[i];
    }

    const i64 max_digit=50;

    vector<i64> s(max_digit);
    rep(i,0,max_digit){
        s[i]=1LL<<i;
    }

    static i64 memo[max_digit][2];
    static bool done[max_digit][2];
    fill_n((i64*)memo,max_digit*2,0);
    fill_n((bool*)done,max_digit*2,false);
    function<i64(i64,i64)> rec=[&](i64 d,i64 b){
        if(d==-1){
            return i64(0);
        }

        auto& res=memo[d][b];
        if(done[d][b]) return res;
        done[d][b]=true;

        if(b==0){
            {
                // 0
                i64 tmp=0;
                rep(i,0,N){
                    if(A[i]&s[d]){
                        tmp+=s[d];
                    }
                }
                chmax(res,rec(d-1,0)+tmp);
            }
            {
                // 1
                i64 tmp=0;
                rep(i,0,N){
                    if(!((A[i]&s[d]))){
                        tmp+=s[d];
                    }
                }
                chmax(res,rec(d-1,0)+tmp);
            }
        }else{
            if(K&s[d]){
                {
                    // 0
                    i64 tmp=0;
                    rep(i,0,N){
                        if(A[i]&s[d]){
                            tmp+=s[d];
                        }
                    }
                    chmax(res,rec(d-1,0)+tmp);
                }
                {
                    // 1
                    i64 tmp=0;
                    rep(i,0,N){
                        if(!((A[i]&s[d]))){
                            tmp+=s[d];
                        }
                    }
                    chmax(res,rec(d-1,1)+tmp);
                }
            }else{
                {
                    // 0
                    i64 tmp=0;
                    rep(i,0,N){
                        if(A[i]&s[d]){
                            tmp+=s[d];
                        }
                    }
                    chmax(res,rec(d-1,1)+tmp);
                }
            }
        }

        return res;
    };

    cout << rec(max_digit-1, 1) << endl;
}

int main() {
    std::cin.tie(0);
    std::ios::sync_with_stdio(false);
    cout.setf(ios::fixed);
    cout.precision(16);
    solve();
    return 0;
}


Measured memory_bytes: 1024