小苯的数组切分
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

qionghua 给了小苯一个长度为 n 的数组 a,希望小苯将数组 a 分为恰好非空的三段。即:[1, l - 1], [l, r], [r+1, n] 这三段,其中 1 <\ l \le r < n。接着:

  第一段的所有数字做  \oplus(按位异或)运算。
  第二段的所有数字做  | (按位)运算。
  第三段的所有数字做  \&(按位)运算。

将这三段数字运算的结果做加法求和,作为小苯的得分。

小苯想知道他如果以最优的方案切分数组,最多能获得多少得分,请你帮他算一算吧。

输入描述:

输入包含两行。
第一行一个正整数 n (3\leq n \leq 2 \times 10^5),表示数组 a 的长度。
第二行 n 个正整数 a_i (1 \leq a_i \leq 10^9),表示数组 a 的元素。

输出描述:

输出包含一行一个正整数,表示小苯的最高得分。
示例1

输入

复制
4
3 4 2 2

输出

复制
11
示例2

输入

复制
4
2 3 3 3

输出

复制
8

备注:

位运算的补充: