#P1049. 划分序列

划分序列

Description

A君喜欢研究序列,现在他在研究如何给一个整数序列进行划分。

他按照如下方式计算一个整数序列 aa 的价值 VV:

  1. 从序列中选出 mm 对数,一个数 AiA_i 只能被选一次,若序列长度不足 2m2m,则选尽量多对

  2. 对于每对数计算它们差值的平方,这些平方的和记为 SS

  3. 这个序列 aa 的价值 VV 即为所有可能的取法中 SS 的最大值

现在A君想要将一个给定的序列 PP 分成尽量少的连续的段,要求每一段(即为 PP 的一个连续子序列)的价值不超过 KK。

现在给定整数序列 PP 与 MM 和 KK,你能帮助A君计算最少要划分成多少段吗?

Input Format

第一行三个整数 n,m,kn,m,k,nn 表示序列 PP 的长度,m,km,k 意义见题目描述。

第二行 nn 个整数表示序列 PP。

Output Format

仅一行一个整数表示答案。

Sample

样例输入1:

5 1 49
8 2 1 7 9

样例输出1:

2

样例输入2:

15 3 111
2 5 1 11 9 0 2 1 9 1 1 3 4 11 3

样例输出2:

4

Hint

30%30\% 的数据:n≤10n \le 10

50%50\% 的数据:n,m≤1000n,m \le 1000

另有 20%20\% 数据:PiP_i 的取值只有两种

100%100\% 的数据:$1 \le n,m \le 3 \times 10^5,0 \le K \le 10^{18},0 \le P_i \le 2^{20}$