/************************************************************** Problem: 4245 User: Cansult Language: C++ Result: Accepted Time:1756 ms Memory:5196 kb ****************************************************************/ #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #define MAXN (500000 + 5) #define LL unsigned long long usingnamespace std; int n, m; LL ans, a[MAXN]; boolpd(LL x) { int re = 0, i = 0; while (i < n) { LL dq = a[++i]; while ((x | dq) != x && i < n) dq ^= a[++i]; if ((x | dq) == x) ++re; elseif (i == n) returnfalse; } return re >= m; } voidsolve() { for (int i = 63; i >= 0; i--) if (!pd((ans | ((1ll << i) - 1)))) ans |= (1ll << i); } intmain() { scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) scanf("%llu", &a[i]); solve(); printf("%llu\n", ans); return0; }