#include using namespace std; typedef long double ld; typedef long long ll; typedef pair ii; typedef pair dd; typedef vector vi; typedef vector vll; typedef vector> vvi; typedef vector vii; void bin(int a, vector &v) { for(int i = 0; i < 30; ++i) { v[30-i-1] = a&(1 << i); } // for(int i = 0; i < 30; ++i) { // cout << v[i]; // } // cout << endl; } int main(){ ios::sync_with_stdio(false); int N, K; cin >> N >> K; vector> B(N, vector(30)); vector cand(N, true); vi A(N); for(int i = 0; i < N; ++i) { int x; cin >> x; A[i] = x; bin(x, B[i]); } bool found = false; int rem = N; for(int i = 0; !found && i < 30; ++i) { int s = 0; for(int j = 0; !found && j < N; ++j) s += cand[j] * B[j][i]; if (s >= K) { for(int j = 0; !found && j < N; ++j) { if (!B[j][i] && cand[j]) { if (rem == K) { found = true; // cout << "AHOJ" << endl; break; } else { --rem; cand[j] = false; } } } } // cout << "Iteration " << i << endl; // cout << s << endl; // for(int j = 0; j < N; ++j) { // cout << cand[j]; // } // cout << endl; } bool first = true; int counted = 0; int res; for(int k = 0; counted < K && k < N; ++k) { if (cand[k]) { if (first) { first = false; res = A[k]; } else { res = res & A[k]; } ++counted; } } cout << res << endl; }