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

vector<int> v;
map<pair<int,int>, int> m;
int interval(int l, int r){
    int ans=v[l];
    for(int i=l+1; i<=r; i++){
        ans|=v[i];
    }
    //cout<<ans<<' ';
    return ans;
}
int ansi(vector<int> where){
    int ans=where[0];
    for(int i=1; i<where.size(); i++){
        ans&=where[i];
    }
    return ans;
}
int maxansi=0;
int n;
void all(int k, int start, vector<int> ok){
    if(k==1){
        if(m.find({start,n-1})==m.end()){
            m[{start,n-1}]=interval(start,n-1);
        }
        ok.push_back(m[{start,n-1}]);
        int ans=ansi(ok);
        if(ans>maxansi){
            maxansi=ans;
        }
        return;
    }
    for(int i=start; i<v.size()-(k-1); i++){
        vector<int> ko=ok;
        if(m.find({start,i})==m.end()){
            m[{start,i}]=interval(start,i);
        }
        ko.push_back(m[{start,i}]);
        all(k-1,i+1,ko);
    }
    return;
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int k;
    cin>>n>>k;
    int ai;
    bool isitone=true;
    for(int i=0; i<n; i++){
        cin>>ai;
        if(ai>1){
            isitone=false;
        }
        v.push_back(ai);
    }
    if(isitone==true){
        cout<<1;
        return 0;
    }
    all(k,0,{});
    cout<<maxansi;
}
