#281. 位运算

位运算

题目描述

你有一个长度为nn的序列a1,...,ana_1,...,a_n。你想从中提取一个子序列ai1,...,aima_{i_1},...,a_{i_m},子序列应当满足

  • m1m\ge 1
  • 1i1<i2<i3<...<imn1\le i_1<i_2<i_3<...<i_m\le n

你希望在此前提下最大化ai1+j=2maij op aij1a_{i_1}+\sum_{j=2}^m a_{i_j}\ op \ a_{i_{j-1}}

请你针对op=and,op=or,op=xorop=and,op=or,op=xor三种情况分别求解并输出答案。

这里and,or,xorand,or,xor表示位运算与,或,异或。

输入格式

第一行一个正整数nn

接下来一行nn个整数表示a1,...,ana_1,...,a_n

输出格式

输出一行三个整数分别表示ai1+j=2maij op aij1a_{i_1}+\sum_{j=2}^m a_{i_j}\ op \ a_{i_{j-1}}opopand,or,xorand,or,xor时的最大值,用空格隔开。

样例

5
1 2 3 4 5
8 19 13

解释 #1

op=andop=and时,选取4,54,5作为子序列使得式子最大,值为4+4 and 5=84+4\ and\ 5=8

op=orop=or时,选取1,2,3,4,51,2,3,4,5作为子序列使得式子最大,值为1+1 or 2+2 or 3+3 or 4+4 or 5=191+1\ or\ 2+2\ or \ 3+3\ or \ 4+4\ or \ 5=19

op=xorop=xor时,选取1,2,3,4,51,2,3,4,5最大,值为$1+1\ xor\ 2+2\ xor\ 3+3\ xor\ 4+ 4\ xor \ 5=1+3+1+7+1=13$

10
100 127 64 98 1 40 31 78 99 2
462 960 642

数据范围

对于100%100\%的数据,1n105,0ai<2161\le n\le 10^5,0\le a_i<2^{16}