#include <bits/stdc++.h>

using namespace std;
int v[1000005];
int combi[30];
int n,k,maxi=0;
void verif()
{
    int sum;
    for(int i=1;i<=k;i++)
    {
        int val=v[combi[i-1]+1];
        for(int j=combi[i-1]+2;j<=combi[i];j++)
            val|=v[j];
        if(i==1)
            sum=val;
        else
            sum&=val;
    }
    maxi=max(maxi,sum);
    //cout<<sum<<" "<<maxi<<"\n\n";
}
void cmb(int poz, int ultval)
{
    for(int i=ultval+1;i<=n-(k-poz);i++)
    {
        combi[poz]=i;
        if(poz==k)
            verif();
        else
            cmb(poz+1,i);
    }
}
int main()
{
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i];
        maxi=max(maxi,v[i]);
    }
    if(maxi<=1)
    {
        int cnt1=0;
        for(int i=1;i<=n;i++)
            if(v[i]==1)
                cnt1++;
        if(cnt1>=k)
            cout<<1;
        else
            cout<<0;
    }
    else if(maxi<=2)
    {
        int cnt1=0,cnt2=0;
        for(int i=1;i<=n;i++)
        {
            if(v[i]==1)
                cnt1++;
            if(v[i]==2)
                cnt2++;
        }
        if(cnt1==0&&cnt2==0)
        {
            cout<<0;
            return 0;
        }
        if(cnt1>0&&cnt2==0)
        {
            if(cnt1>=k)
                cout<<1;
            else
                cout<<0;
            return 0;
        }
        if(cnt1==0&&cnt2>0)
        {
            if(cnt2>=k)
                cout<<2;
            else
                cout<<0;
            return 0;
        }
        if(cnt1>0&&cnt2>0)
        {
            if(cnt1+cnt2<k)
            {
                cout<<0;
                return 0;
            }
            if(cnt1+cnt2==k)
            {
                cout<<1;
                return 0;
            }
            int cnt3=0,ult1=0,cnt=0;
            for(int i=1;i<=n;i++)
            {
                if(v[i]==1)
                    ult1=i;
                if(v[i]==2)
                {
                    if(ult1!=0)
                    {
                        cnt++;
                        ult1=0;
                    }
                }
            }
            cnt3=max(cnt3,cnt);
            cnt=0;
            ult1=n+1;
            for(int i=n;i>=1;i--)
            {
                if(v[i]==1)
                    ult1=i;
                if(v[i]==2)
                {
                    if(ult1!=n+1)
                    {
                        cnt++;
                        ult1=n+1;
                    }
                }
            }
            cnt3=max(cnt3,cnt);
            if(cnt3>=k)
            {
                cout<<3;
                return 0;
            }
            if(cnt2<cnt1)
            {
                cout<<1;
                return 0;
            }
            else
            {
                cout<<2;
                return 0;
            }
        }
    }
    else
    {
        maxi=0;
        cmb(1,0);
        cout<<maxi;
    }
    return 0;
}
