Mas的童年
时间限制 : 1 s
空间限制 : 1 gigabyte
题目
Mas完成了一天的工作,走在回家的路上,看着路边的景色,他想起来自己的童年。
许许多多的记忆交错,丝丝缕缕的牵扯着Mas。
在回忆的深处,Mas想起来了一个常常在幼儿园玩的游戏。
有n个小朋友一起排成一排,然后小朋友们会一起开始跳舞。
聪明的Mas发现,每个小朋友都有自己的高兴程度,对于第i个小朋友,他的高兴程度是ai。
当一排高兴程度分别为b1,b2,…,bk的k个小朋友跳舞的时候,他们会产生b1⊕b2⊕⋯⊕bk的愉悦值。
但是Mas觉得不够尽兴,于是他决定让小朋友们从某个位置分开,让原本一排的队伍分成两排,从而使两排新队伍的愉悦值加起来最大,当然,是有可能不分成两排的。
具体的,对于一排k个小朋友,他们的高兴程度分别是b1,b2,…,bk,Mas会找到位置i∈[0,k),使得(b1⊕⋯⊕bi)+(bi+1⊕⋯⊕bk)最大。
回想起这个游戏的Mas决定再来玩一下这个游戏,于是他想起来了某一天排成一排的n个小朋友的高兴程度a1,a2,…,an,对于i=1..n,Mas希望求出前i个小朋友排成的队伍中通过拆分成两个队伍能够得到的最大愉悦值的和是多少。
输入
第一行一个正整数n表示小朋友的数量。
第二行n个整数,表示a1..n。
输出
一行n个整数表示答案。
样例输入&样例输出
见下发文件中的childhood0\sim1.in和childhood0\sim1.ans。
数据范围
对于30%的测试数据,n≤5000
对于另外40%的测试数据,n≤105,0≤ai≤105
对于100%的测试数据,n≤106,0≤ai≤106