L - をあ ぷろぶれむ 解説 /

実行時間制限: 2 sec / メモリ制限: 1024 MB

配点: 700

問題文

いろはちゃんは、高橋君に次の問題を出されました。

  • 非負整数列 A_1, A_2, \dots, A_N が与えられる。
  • 1 \leq l \leq r \leq N を満たすすべての整数組 (l, r) に対し、A_l xor ... xor A_r を計算して黒板に書く。
  • 上の操作によって黒板に書かれた N(N+1)/2 個の整数を大きい順に並べ直したとき、K 番目の数が何になるか答えよ。

いろはちゃんは、この問題をすでに「AtCoder甲子園」で解いたことがあります。そのことを高橋君に伝えると、「xor は or の書き間違い だった」と言われました。この発言の真偽はともかく、上の問題の xor を or に読み替えて 解きなおしてください。

制約

  • 1 \leq N \leq 10^5
  • 1 \leq K \leq N(N+1)/2
  • 0 \leq A_i < 2^{60}
  • N,K,A_i は整数

入力

入力は以下の形式で標準入力から与えられます。

N K
A_1
A_2
\vdots
A_N

出力

高橋君に出された問題の xor を or に読み替えた ときの答えを 1 行に出力してください。


入力例 1

3 3
4
3
5

出力例 1

7

入力例 2

3 6
1
3
4

出力例 2

1

入力例 3

9 37
2
0
1
2
5
7
0
2
3

出力例 3

2

入力例 4

17 100
3
14
15
92
65
35
89
79
32
38
46
26
43
38
32
79
50

出力例 4

111