#include <bits/stdc++.h>

using namespace std;
const int MAXN = 1e6;
long long dp [MAXN];
long long a[MAXN];
long long pre[MAXN];

int main ()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    long long n, k;
    cin >> n >> k;

    for (long long i = 0; i < n; i ++)
    {
        cin>>a[i];
    }

    for (long long i = 1; i <= k; i ++)
    {
        if (i == 1)
        {
            for (long long j=0; j<n; j++)
            {
                if (j == 0)
                {
                    dp[j]=a[j];
                    pre[j]=dp[j];
                }
                else
                {
                    dp[j]=(dp[j-1]&a[j]);
                    pre[j]=max(dp[j], dp[j-1]);
                }
            }
        }
        else
        {
            for (long long j=n-1; j>=0; j--)
            {
                long long maxi=pre[j-1];
                dp[j]=(a[j]&maxi);
                if(j==n-1)
                {
                    pre[j]=dp[j];
                }
                else
                {
                    pre[j]=max(dp[j],dp[j+1]);
                }
            }
        }

    }
    cout<<dp[n-1]<<endl;
}
