#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int st = 0, st1 = 0, dr = 0, dr1=0, s1=0,s2=0;
    bool first = true;
    int n,k,operatii = 1;
    cin>>n>>k;
    vector<int> v(n+1);
    for(int i=1;i<=n;i++)
        cin>>v[i];
    int i;
    for(i=1;i<=n && operatii <k;i++)
    {
        st1 = st | v[i];
        if(st==st1 && v[i]!=0)
        {
            if(first == true)
            {
                first = false;
                s1 = st;
            }
            else
                s1 = s1 & st;
            st1 = v[i];
            operatii++;
        }
        st = st1;
    }
    st = st1 = 0;
    for(;i<=n;i++)
    {
        st1 = st | v[i];
        st = st1;
    }
    s1 = s1 & st1;
//    reverse(v.begin()+1, v.end());
//    first = true;
//    for(int i=1;i<=n;i++)
//    {
//        dr1 = dr | v[i];
//        if(dr==dr1 && v[i]!=0)
//        {
//            if(first == true)
//            {
//                first = false;
//                s2 = dr;
//            }
//            else
//                s2 = s2 & dr;
//            dr1 = v[i];
//        }
//        dr = dr1;
//    }
    cout<<max(s1,s2);
    return 0;
}
