编程题
### 问题描述
小蓝是一个热爱解决难题的冒险家,他最近遇到了一个具有挑战性的任务。他手里有一个长度为 $n$ 的序列,其中包含了 $n$ 个整数。现在,小蓝需要将这个序列划分成 $k$ 个子段,每个子段的价值定义为该子段内元素的异或和。他的目标是最小化这些子段的最大价值。
具体来说,小蓝需要找到一种划分方式,使得所有子段的最大价值尽可能小。这对小蓝来说是一项艰巨的任务,但他相信您可以帮助他找到答案。
你能帮助小蓝解决这个分段之谜吗?
### 输入格式
第一行输入两个整数 $n$ 和 $k$,分别表示序列的长度和子段的数量。
接下来一行输入 $n$ 个整数,表示序列中的元素。
### 输出格式
输出一个整数,表示小蓝能够达到的最小的子段最大价值。
### 样例输入
```
5 2
1 4 3 5 10
```
### 样例输出
```
8
```
### 说明
一种分割方式是 $\lbrace 1 \rbrace,\lbrace 4,3,5,10 \rbrace$,第一段的价值为 $1$,第二段的价值是 $8$,最大值是 $8$。
可以证明,这是最小的最大值,其他划分方式均比该方式要大。
### 评测数据范围
$1 \le n \le 200, 1 \le k \le 100$。