#P1052. 相等数组

相等数组

题目描述

Eve 有一个长度为 nn 的数组 aa 以及一个常数 m≥2m\ge 2,他知道对于任意的 1≤i≤n1\leq i\leq n,都有 2≤ai≤m2\leq a_i\leq m。

Eve 觉得数组里一定要有全部相等的元素,所以他想通过以下操作把数组里的元素变得全部相等:

  • 选定一个整数 2≤t≤m2\leq t\leq m,然后令每一个 aia_i 都变为 gcd⁡(ai,t)\gcd(a_i,t),其中 gcd⁡(x,y)\gcd(x,y) 表示 x,yx,y 的最大公因数,例如 gcd⁡(4,6)=2,gcd⁡(15,21)=3\gcd(4,6)=2,\gcd(15,21)=3。

请帮助 Eve 求出最少操作多少次能够使得数组里元素全部相等,如果无论多少次操作都不能达成目标,则输出 −1-1。

输入格式

第一行一个整数 TT 表示数组组数,对于每组数据:

第一行两个正整数 n,mn,m。

第二行 nn 个整数 a1,a2,…,ana_1,a_2,\dots,a_n。

输出格式

对于每组数据,如果能使得数组元素全相等,输出一行一个非负整数表示最小操作次数,否则输出一行 -1。

2
3 343
343 343 343
5 100
4 8 12 16 20
0
1

样例解释 1

对于第二组数据,取t=4操作一次即可使数组元素全变为4。

数据范围

对于 30%30\% 的数据,∑n≤20\sum n\leq 20,m≤20m\leq 20。

对于 60%60\% 的数据,∑n≤3×105\sum n\leq 3\times 10^5,m≤1000m\leq 1000。

对于 100%100\% 的数据,1≤T≤1051\leq T\leq 10^5,1≤n≤1051\leq n\leq 10^5,∑n≤3×105\sum n\leq 3\times 10^5,2≤m≤1062\leq m\leq 10^6,2≤ai≤m2\leq a_i\leq m。