小雷的神奇电脑
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小雷有一台特殊的电脑,这台电脑有一个m位的寄存器,能够存储一个m位的二进制数。换句话说,这台电脑可以存储一个从02^m-1之间的任何非负整数。
小雷还有一组n个非负整数的列表(中每一个数都严格小于2^m)。他想要找出这个列表中任意两个不同的数(下标不同就行),将它们放入电脑中进行同或运算后,得到的结果是所有可能的同或结果中最大的那个。
同或运算解释
同或运算(XNOR)是一种逻辑运算,它接受两个二进制位作为输入,并根据以下规则产生输出:
• 如果两个输入位相同,则输出为1
• 如果两个输入位不同,则输出为0
对于两个整数AB,它们的同或结果是通过将AB转换为二进制表示,然后对每个位进行同或运算得到的。

输入描述:

第一行输入 n m ( 2\leq n\leq200000,1 \leq m \leq 30 )
接下来是n个整数a_1,a_2,a_3……a_n (保证a_i严格小于2^m)

输出描述:

输出一个整数,这个整数是在这个数组任意两个数同或的最大值
示例1

输入

复制
4 3
7
5
1
3

输出

复制
5

说明

1在这台电脑中为001,3在这台电脑中为011,同或为101=5。