#M251122. 按位或

按位或

题目描述

小Z刚刚学习了位运算中的“按位或”,在C++中使用 | 表示。它是指两个数字逐位进行或操作,如:

   10101
|  11001
--------
   11101
    

现在小Z手上有一个大小为 nn 的整数数组 AA,保证其中至少有 22 种不同的数字。

现在他想对数组中的每一个元素都和一个整数 x 进行按位或,并且要求新的数组中也都至少有 22 种不同的数字。

其中 xx 也有取值范围,是在 0m0\sim m 之间,询问 xx 的最大值。

输入格式

第一行 22 个正整数,分别为 n,mn, m

第二行为 nn 个正整数 AiA_i,中间用空格隔开

输出格式

11 行,代表该组数据能进行按位或的 xx 在范围内的最大值

输入输出样例

3 3
1 1 3
1

在之上数据中,当 x=1x=1 时,能保证按位或后的新数组 [0,0,2][0,0,2] 还含有 22 种数字,xx 更大时无法满足要求。

数据范围

20%:m10020\%: m \le 100

100%:2n105,0Ai,m<230100\%:2\le n \le 10^5, 0\le A_i,m<2^{30}