题目描述
给定一个长度为 n 的数列,从中选出两段不重叠的连续子序列,使得第一段连续子序列的异或和 + 第二段连续子序列的异或和 最大。
换句话说,你需要找到两个区间 [l1,r1] 和 [l2,r2],且同时满足如下条件:
- 1≤l1≤r1<l2≤r2≤n
- (al1⊕al1+1⊕…⊕ar1)+(al2⊕al2+1⊕…⊕ar2) 最大。
其中,⊕ 是异或运算符。
输入格式
第一行,一个整数 n,表示数列长度。
第二行,n 个整数 a1,a2,…,an。
输出格式
输出一个整数,表示题目所述能够得到的表达式的最大值。
样例
5
1 2 3 1 2
6
说明/提示
样例解释
满足条件的 (l1,r1,l2,r2) 有:(1,2,3,3),(1,2,4,5),(3,3,4,5)。
数据规模与约定
- 对于 30% 的数据,n≤5000
- 对于 100% 的数据,2≤n≤5×105,0≤ai≤109