#include using namespace std; #define FOR(i, a, b) for (int i = (int)(a); i < (int)(b); ++i) #define REP(i, n) FOR(i, 0, n) #define TRACE(x) cerr << #x << " = " << x << endl #define _ << " _ " << #define pb push_back #define x first #define y second typedef long long ll; typedef long double lf; const int MAXN = 2e5 + 10; int n, k; vector niz; int main(void) { scanf("%d %d", &n, &k); REP(i, n) { int x; scanf("%d", &x); niz.push_back(x); } int rj = 0; for(int bit = 29; bit >= 0; bit--) { int brojac = 0; REP(i, (int) niz.size()) { if(niz[i] & (1 << bit)) brojac++; } if(brojac >= k) { vector novi; REP(i, (int) niz.size()) if(niz[i] & (1 << bit)) novi.push_back(niz[i]); niz = novi; rj += (1 << bit); } } printf("%d\n", rj); return 0; }