区间异或和异或区间最大值异或区间最小值
题号:NC53251
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

w学会了RMQ算法,他现在可以求出一个给定数组某一段子区间的最大值,最小值。
在这之前,他也学会了前缀和,并且他知道前缀和可以扩展到位运算求出区间异或和。

现在你给了他一个长度大小为n的数组,为了考察小wRMQ以及前缀异或和的正确性,你要求他求出该数组的某一个子区间,记该子区间的异或和为xorsum,记该子区间的最大值为max,记该子区间的最小值为min,你要求使得xorsummaxmin最大。其中⊕为位运算异或操作。

输入描述:

第一行输入一个正整数n,表示数组的长度。
接下来一行n个非负整数a[i]表示数组中的内容。

输出描述:

仅一行一个非负整数,表示xorsum⊕max⊕min的最大值。
示例1

输入

复制
3
1 2 3

输出

复制
3

说明

[1,1]的答案为1
[1,2]的答案为0
[1,3]的答案为2
[2,2]的答案为2
[2,3]的答案为0
[3,3]的答案为3
所以最大值为3。

备注:


对于所有数据:1\leq n\leq 10^5,0\leq a_i\leq 10^9