宝石街
题号:NC216031
时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

镇,坐落着一条长度为的宝石街。
把起点定为原点,以终点方向作为正方向建立数轴,那么对于每个整数,在点处有a_i块宝石。
身无分文的小此时就站在原点,径直向终点走去。在且仅在行走的过程中经过每一个整数点,他可以选择捡起或扔掉任意块的宝石,也可以既不捡又不扔。设他在某一点拥有的宝石数为,那么他走到下一个点需要的时间也为
现在,小想知道,在行走时间不超过(不需要到达终点)时,他最多可以拥有多少块宝石?

输入描述:

由于本题数据范围较大,部分测试点的a_i将在程序内生成。
输入共行。
行包含个正整数
,保证行包含个正整数,其中第个数表示
,第行包含个正整数a_1。对于每个整数,设,则(其中是按位异或运算)。
注意,本题的标准解法并不依赖于此数据生成方法

输出描述:

输出共行,包含个非负整数,表示小拥有的最多宝石数。
示例1

输入

复制
5 12 1
2 5 2 5 2

输出

复制
12

说明

捡起点\text 2,3,4上的所有宝石;不扔宝石。
则小\text D在点\text 2的宝石数为\text 5,用\text 5的时间移动到点\text 3
在点\text 3的宝石数为\text 7,用\text 7的时间移动到点\text 4
在点\text 4的宝石数为\text 12。用时\text 12