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

struct Fenwick
{
    int n;
    vector<int>tree;

    Fenwick(int n):n(n)
    {
        tree.assign(n+1,0);
    }

    void setsz(int nn)
    {
        n=nn;
        tree.assign(n+1,0);
    }

    void upd(int i,int v)
    {
        while(i<=n)
        {
            tree[i]+=v;
            i+=i&(-i);
        }
    }

    int sum(int i)
    {
        int s=0;
        while(i>0)
        {
            s+=tree[i];
            i-=i&(-i);
        }
        return s;
    }

    int qry(int l,int r)
    {
        return sum(r)-sum(l-1);
    }
};

Fenwick fwk[31];

bool check(int mid,int n)
{
    int b=30;
    while(b>=0)
    {
        if((!(mid>>b)&1))continue;
        break;
    }
    vector<pair<int,int>inter;
    int l=0;
    for(int i=0;i<n;i++)
    {
        if((a[i]>>b)&1)
        {
            inter.push_back(l,i);
            l=i+1;
        }
    }
    if(l!=0 && l!=n-1)inter.back().second=n-1;
    
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int n,k;
    cin>>n>>k;
    vector<int>a(n);
    for(int i=0;i<30;i++)
    {
        fwk[i].setsz(n);
    }

    int step=1;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        while(step<=a[i])step*=2;
        for(int b=0;b<30;b++)
        {
            if((a[i]>>b)&1)
            {
                fwk[b].upd(i+1,1);
            }
        }
    }

    int l=0,r=step,m,ans;
    while(l<=2)
    {
        m=(l+r)/2;
        if(check(m,n))
        {
            ans=m;
            l=m+1;
        }
        else
        {
            r=m-1;
        }
    }

    cout<<ans<<'\n';

    return 0;
}