#include <bits/stdc++.h>
using namespace std;
long long n, k;
bool check(long long a[], long long s[], long long x) {
  bool dp[n][k];
  memset(dp, false, sizeof dp);
  for (int i = 0; i < n; i++) {
    if ((s[i] & x) == x) {
      dp[i][0] = true;
    }
  }
  for (int i = 1; i < n; i++) {
    for (int j = 0; j < i; j++) {
      for (int l = 1; l < k; l++) {
        if (dp[j][l - 1] && ((x & (s[i] - s[j])) == x)) {
          dp[i][l] = true;
        }
      }
    }
  }
  return dp[n - 1][k - 1];
}
int main() {
  cin >> n >> k;
  long long a[n];
  long long s[n];
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  s[0] = a[0];
  for (int i = 1; i < n; i++) {
    s[i] = a[i] + s[i - 1];
  }
  long long x = 0;
  long long z = 0;
  for (int i = 56; i >= 0; i--) {
    x = z;
    x |= 1LL << i;
    if (check(a, s, x)) {
      z = x;
    }
  }
  cout << z << endl;
}
