Jewel maximizing magic
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
Special Judge, 64bit IO Format: %lld

题目描述

Antiamuny 有一个 n 个数的可重集合,每个数的范围为 [0,1024);同时 Antiamuny 有一个宝石,当前它的珍贵值 t=0

Antiamuny 需要对这个集合操作 n-1 次,每次操作需要从集合里挑出两个数 a, b ,把 ab 从集合中删除,然后把 a \oplus b 放回集合。

与此同时,Antiamuny 的宝石珍贵值会变为原先的宝石珍贵值与新加入集合的数的异或和,即 t \leftarrow t \oplus (a \oplus b)

Antiamuny 想知道 n-1 次操作后后可以得到的宝石的最大珍贵值是多少,请你写个程序帮帮他。

输入描述:

第一行包含一个整数 n (1 \leq n \leq 3 \times 10^3),表示集合内元素数量。

第二行包含 n 个整数 a_1, a_2, \ldots, a_n (0 \leq a_i < 1024),中间以空格分隔,分别表示集合中的每个元素。

输出描述:

在一行输出一个整数,表示可以得到的最大珍贵值。
示例1

输入

复制
3
1 2 3

输出

复制
3
示例2

输入

复制
5
7 3 2 1 6

输出

复制
7

备注:

按位异或(bitwise exclusive-or)是一种二进制位运算方法,两个整数的异或值为它们二进制下按位异或的结果。


3 的二进制表示为 (0011)_29 的二进制表示为 (1001)_210 的二进制表示为 (1010)_2 。则 3 \oplus 9=10

对于第一组样例:


对于第二组样例: