#include <iostream>
#define int long long
using namespace std;
int v[1000005];
int c[1005];
int n;
int k;
int maximus;
void bkt(int mask)
{
    int cnt=0;
    for(int i=1;i<n;i++)
    {
        c[i]=mask%2;
        cnt+=c[i];
        mask/=2;
    }

    if(cnt!=(k-1))
        return;
    int an;
    int o=0;
    int j=1;
    int ok=1;
    while(j<=n)
    {
        o=(o|v[j]);

        if(c[j] || j==n)
        {
            if(ok)
            {
                ok=0;
                an=o;
            }
            else
                an=(an&o);
            o=0;

        }
        j++;
    }
    maximus=max(maximus,an);
}
signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n>>k;
    int maxi=-1;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i];
        maxi=max(maxi,v[i]);
    }
    if(n>20)
    {


    int pow=1;
    while(pow<=maxi)
    {
        pow*=2;
    }
    pow--;
    int res=0;
    for(int rez=0;rez<=pow;rez++)
    {
        int cate=1;
        int j=1;
        int orr=0;
        while(j<=n && cate<=k)
        {
            orr=(orr|v[j]);
            if((orr&rez)==rez)
            {
                orr=0;
                cate++;
            }
            j++;
        }
        if(cate>k)
        {
            res=rez;
        }

    }
    cout<<res;
    }
    else
    {
        int pw=1;
        int ct=1;
        while(ct<=n)
        {

        ct++;
            pw*=2;
        }
        for(int mask=0;mask<pw;mask++)
        {
            bkt(mask);
        }
        cout<<maximus;
    }
    return 0;
}
