100 #P2139. 划分

划分

Problem Description

给定一个长度为 nn 的整数序列 a=(a1,a2,…,an)a = (a_1, a_2, \dots, a_n)。你需要将这个序列划分为 mm 个非空且连续的子段。对于每一个子段,定义其价值为该子段内所有元素进行 按位与运算的结果。请你规划一种划分方案,使得这 mm 个子段的价值之和最大,并输出这个最大值。

形式化定义:你需要找到 m−1m-1 个分割点 k1,k2,…,km−1k_1, k_2, \dots, k_{m-1}(满足 1≤k1<k2<⋯<km−1<n1 \le k_1 < k_2 < \dots < k_{m-1} < n),将序列分为 mm 段:[1,k1],[k1+1,k2],…,[km−1+1,n][1, k_1], [k_1+1, k_2], \dots, [k_{m-1}+1, n]。设 $val(l, r) = a_l \ \& \ a_{l+1} \ \& \ \dots \ \& \ a_r$,你需要最大化:

∑i=1mval(Li,Ri)\sum_{i=1}^m val(L_i, R_i)

其中 [Li,Ri][L_i, R_i] 是第 ii 个子段的下标区间。

Input Format

第一行包含两个整数 n,mn, m,分别表示序列的长度和需要切分的段数。 第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n (0≤ai≤109)(0 \le a_i \le 10^9),表示信号序列。

Output Format

输出一个整数,表示能获得的最大价值和。

Sample

Input1:

3 2
7 3 1

Output1:

8

Input2:

4 2
10 7 0 15

Output2:

15

Hint

1≤n≤1e5,1≤m≤501 \le n \le 1e5,1 \le m \le 50, 1≤ai≤1e91 \le a_i \le 1e9.