#184. 区间异或和

区间异或和

附加文件

Description

给出一个数组 A: A[1], A[2], ..., A[N],元素均为非负整数。

任选一个区间,会有 N(N+1)/2 种选法。

对每个区间,将区间内的所有元素进行异或求和,将会得到 N(N+1)/2 个结果(可能有重复的结果)。

请你输出其中最大的结果,并输出对应区间的起点和终点。

如果有多个区间满足条件,你只需要输出区间终点最靠前的那个区间。

如果仍有多个区间满足条件,你只需要输出区间长度最短的那个区间。

Input

第一行:一个整数 N

接下来 N 行:每行一个整数,依次表示 A[1], A[2], ..., A[N]

Output

一行,三个整数,依次表示最大异或和、区间起点、区间终点

Sample Input

5
1
0
5
4
2

Sample Output

6 4 5

Data Size

共 10 个测试点,全部满足:1 ≤ N ≤ 100,000, 0 ≤ A[i] < 2^21。

其中:

  • 测试点 1:N ≤ 100
  • 测试点 2:N ≤ 1,000
  • 测试点 3:N ≤ 10,000
  • 测试点 4-10:N ≤ 100,000