K. GCD of Set

传统 1000 ms 1024 MiB
标准 IO
文本比较

题目描述

小w 很喜欢 gcd\gcd 和集合,于是他想出了这道题。但是 小w 还很喜欢看书,出完这道题他就跑去图书馆了。你能帮他解决这个问题吗?

称一个集合的 gcd\gcd 为集合内所有数的最大公因数。

形式化地,若集合 A={a1,a2,...,an}A=\left \{ a_1,a_2,...,a_n \right \} ,则 gcd(A)=gcd(a1,a2,...,an)\gcd(A)=\gcd(a_1,a_2,...,a_n)

特别地,如果集合只有一个数,则它的 gcd\gcd 是就是这个数,即 gcd({a})=a\gcd(\left \{ a \right \})={a}

给定一个大小为 nn 的不可重数集 UU,你需要将其划分为 kk 个非空子集,使得每个子集的 gcd\gcd 的和最大。

输入格式

第一行,一个整数 t(1t104)t(1 \le t \le 10^4),代表数据组数。

对于每组数据:

第一行,输入 22 个整数 n,kn,k (1kn106)(1 \le k \le n \le 10^6),分别表示集合 UU 的大小和划分的子集数。

第二行,输入 nn 个整数 a1,...,ana_1,...,a_n (1ai106)(1 \le a_i \le 10^6)aia_i 互不相同,表示给定的集合 UU

保证同一测试点内的 aia_i 的最大值之和不超过 10610^6

输出格式

输出一个整数,代表每个子集的 gcd\gcd 的和的最大值。

样例

输入样例

4
3 2
3 6 5
5 4
13 11 10 9 5
4 2
4 2 5 3
4 3
4 2 5 3

输出样例

8
38
6
10