C. 阅兵

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较

题目描述

柏林军队正在准备一场大规模的阅兵式。参加的士兵将被分成人数相等的 k 行。

当然,排兵布阵是需要一定的规则的:同一排士兵的身高相差不应超过 1 且每个士兵的身高是 1 n 之间的整数。

已知每名士兵身高的你,必须将所有参加阅兵的士兵排成 k 排,以满足上述条件。请你编写程序计算可以参加游行的士兵的最大数量。

输入格式

本题有多组数据

第一行包含一个整数 t(1\le t\le 10000) ,表示数据组数。

每组数据都有两行。第一行包含两个整数 n k 1≤n≤30000 1≤k≤10^{12} )分别表示不同高度的士兵数量和士兵排数。

第二行包含 n 个整数 c_1,c_2, ,c_n 0\le c_i\le 10^{12} ),其中 c_i 表示身高为 i 的士兵人数。

输出格式

输出每组数据中可以参加游行的士兵的最大数量。(每两个答案中间有一个换行)

样例

样例输入 #1

5
3 4
7 1 13
1 1
100
1 3
100
2 1
1000000000000 1000000000000
4 1
10 2 11 1

样例输出 #1

16
100
99
2000000000000
13

样例说明

第一组数据,士兵可以站成这样: [3,3,3,3],[1,2,1,1],[1,1,1,1],[3,3,3,3] (每个方括号表示一行);

第二组数据,所有士兵可以全部站成一排;

第三组数据,士兵可以站成 3 排,每排 33 人;

第四组数据,所有士兵可以全部站成一排;

第五组数据,所有身高为 2 3 的可以站成一排。