#P9011. [2017年备战省选]FHC

[2017年备战省选]FHC

Description

有n盏灯,每盏灯熄灭表示0,亮着表示1,灯的状态可以表示一个n位二进制数,其中最左边的是最高位,最右边的是最低位。

你开始观察这些灯,你知道每+1s钟时间,这些灯会修改自己的状态,使得它们所代表的二进制数增加1。当灯表示的是2^n-1时(所有灯都亮着),下1s钟这些灯就会全部熄灭,表示的数字变为0,然后继续+1s+1s……

然而,可能有些灯是坏的(也可能没有坏灯),坏的灯永远都亮不起来,即使它们对应了数字1时也不会亮。你不知道哪些灯坏了。

现在是第0秒,你能看到每盏灯是亮还是灭,你也知道此时恰好有k盏灯应该是亮的(即所代表的二进制数恰好有k位,虽然其中可能有些灯因为坏了而没亮)。保证k不小于当前亮着的灯数量。

假设你继续观察这些灯的变化,你需要再等多少秒才保证能够确定当前灯所表示的二进制数是多少?(只需要确定二进制数是多少,不需要确定哪些灯是坏的)你有可能在第0秒就确定了当前的二进制数,也有可能你永远也确定不了。

Format

Input

第一行一个整数t,表示询问数量。

接下来每组询问的第一行包含n和k,接下来一行包含n个0或1的数字,从左到右表示灯的亮灭状态。

Output

对于每个询问输出一行,表示至少需要再等多少秒才可以保证确定当前的二进制数。输出-1表示永远无法确定。

Samples

5
3 2
1 0 0
3 2
0 0 1
7 4
0 1 0 0 1 0 0
20 15
1 1 0 0 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 1
20 19
0 1 1 0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 0
2
-1
19
217601
8193

Hint

样例解释: 第一个询问中,第0秒时的二进制数只能是101(5)或110(6),下一秒钟只能是110(6)或111(7).

但如果右边两盏灯都是坏的,你仍然会无法决定,需要再等1秒钟,只能是111(7)或000(0),这时你可以通过左边这盏灯的亮灭来判断是7还是0

对于10%的数据n<=3。

对于30%的数据n<=10。

对于50%的数据n<=20。

对于100%的数据n<=60。

对于100%的数据,0<=k<=n,t<=300。