## https://yukicoder.me/problems/no/2977 def solve2(N, K, A): array = [] for i in range(N): for j in range(i + 1, N): array.append(A[i] ^ A[j]) array.sort() print(array[K - 1]) def main(): N, K = map(int, input().split()) A = list(map(int, input().split())) max_a = max(A) for k in reversed(range(40)): if (1 << k) & max_a > 0: max_k = k break keys_pairs = [(0, 0)] keys_map = {0: A} answer = 0 for k in reversed(range(max_k + 1)): new_keys_map = {} new_k = 0 new_a_key_map = {} for a_key, a_array in keys_map.items(): a0 = [] a1 = [] for a in a_array: if (1 << k) & a > 0: a1.append(a) else: a0.append(a) new_keys_map[new_k] = a0 new_keys_map[new_k +1] = a1 new_a_key_map[a_key] = (new_k, new_k + 1) new_k += 2 new_key_pairs = {0: [], 1: []} for p1, p2 in keys_pairs: k0, k1 = new_a_key_map[p1] l0, l1 = new_a_key_map[p2] if len(new_keys_map[k0]) * len(new_keys_map[l0]) > 0: new_key_pairs[0].append((k0, l0)) if len(new_keys_map[k1]) * len(new_keys_map[l1]) > 0: new_key_pairs[0].append((k1, l1)) if p1 == p2: if len(new_keys_map[k0]) * len(new_keys_map[l1]) > 0: new_key_pairs[1].append((k0, l1)) else: if len(new_keys_map[k0]) * len(new_keys_map[l1]) > 0: new_key_pairs[1].append((k0, l1)) if len(new_keys_map[k1]) * len(new_keys_map[l0]) > 0: new_key_pairs[1].append((k1, l0)) x = 0 for k0, k1 in new_key_pairs[0]: b0 = len(new_keys_map[k0]) b1 = len(new_keys_map[k1]) if k0 == k1: x += (b0 * (b0 - 1)) // 2 else: x += b0 * b1 if x < K: K -= x answer += (1 << k) keys_pairs = new_key_pairs[1] else: keys_pairs = new_key_pairs[0] keys_map = new_keys_map print(answer) if __name__ == "__main__": main()