#include <bits/stdc++.h>
using namespace std;
int n, k;
long long a[52], sum[52];
long long x;
bool dp[52][52], vis[52][52];
bool go(int pos, int baki) {
  if (pos > n) {
    if (baki) return false;
    return true;
  }
  if (vis[pos][baki]) return dp[pos][baki];
  vis[pos][baki] = true;
  dp[pos][baki] = 0;
  for (int i = pos; i <= n; i++) {
    if (((sum[i] - sum[pos - 1]) & x) == x)
      dp[pos][baki] |= go(i + 1, baki - 1);
  }
  return dp[pos][baki];
}
int main() {
  int i, j;
  scanf("%d%d", &n, &k);
  for (i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
    sum[i] = sum[i - 1] + a[i];
  }
  long long ans = 0;
  for (i = 60; i >= 0; i--) {
    x = ans + (1LL << i);
    memset(vis, false, sizeof(dp));
    if (go(1, k)) ans = x;
  }
  printf("%lld\n", ans);
  return 0;
}
