#P1049. 划分序列

划分序列

Description

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

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

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

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

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

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

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

Input Format

第一行三个整数 n,m,kn,m,knn 表示序列 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\% 的数据:n10n \le 10

50%50\% 的数据:n,m1000n,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}$