#P1206. 交换操作

    ID: 207 远端评测题 1000ms 1024MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>广东省第二十届大学生程序设计竞赛(GDCPC2023)

交换操作

Description

给定长度为 \(n\) 的非负整数序列 \(A = a_1, a_2, \dots, a_n\),定义

\[ F(A)=\max\limits_{1\leq k<n} ((a_1 \,\&\, a_2 \,\&\, \cdots \,\&\, a_k)+(a_{k+1} \,\&\, a_{k+2} \,\&\, \cdots \,\&\, a_n)) \]

其中 \(\&\) 表示按位与操作。

您可以进行至多一次交换操作:选择两个下标 \(i\)\(j\) 满足 \(1\leq i < j\leq n\),交换 \(a_i\)\(a_j\) 的值。

求经过至多一次交换后,\(F(A)\) 的最大值。

Input

有多组测试数据。第一行输入一个整数 \(T\) 表示测试数据组数。对于每组测试数据:

第一行输入一个整数 \(n\)\(2\leq n\leq 10^5\)),表示序列 \(A\) 的长度。

第二行输入 \(n\) 个整数 \(a_1, a_2, \cdots, a_n\)\(0\leq a_i\leq 10^9\)),表示给定的序列 \(A\)

保证所有数据 \(n\) 之和不超过 \(10^5\)

Output

每组数据输出一行一个整数,表示经过至多一次交换后 \(F(A)\) 的最大值。

3
6
6 5 4 3 5 6
6
1 2 1 1 2 2
5
1 1 2 2 2
7
3
3

Hint

对于第一组样例数据,可以交换 \(a_4\)\(a_6\) 将序列变为 \(\{6, 5, 4, 6, 5, 3\}\),然后选择 \(k = 5\),就得到了 \(F(A) = (6 \,\&\, 5 \,\&\, 4 \,\&\, 6 \,\&\, 5) + (3) = 7\)

对于第二组样例数据,可以交换 \(a_2\)\(a_4\) 将序列变为 \(\{1, 1, 1, 2, 2, 2\}\),然后选择 \(k = 3\),就得到了 \(F(A) = (1 \,\&\, 1 \,\&\, 1) + (2 \,\&\, 2 \,\&\, 2) = 3\)

对于第三组样例数据,不进行交换操作,然后选择 \(k = 2\),就得到了 \(F(A) = (1 \,\&\, 1) + (2 \,\&\, 2 \,\&\, 2) = 3\)