给定一个长度为 n 的数组 {a1,a2,...,an} ,且满足 a1≦a2≦an 。
你可以至多进行一次以下操作:
选择一个区间 [l,r](1≦l≦r≦n) ,对区间内每个 i(1≦i≦r) ,将 ai 变成 ai+(r−i+1)×m 。
请问:为了使操作后数组存在 j 使得 aj>aj+1 ,需要选择的区间长度 r−l+1 的最小值是多少?如果无法通过一次操作满足该要求,则输出 −1 。
每个测试文件均包含多组测试数据。
第一行输入一个整数 T(1≦T≦104),代表数据组数;
随后对于每组数据,按以下格式输入:
第一行输入两个整数 n,m(2≦n≦2×105,1≤m≤109) ;
第二行输入 n 个整数 a1,a2,...,an(1≦ai≦109) 。
此外,保证所有测试数据中 ∑n≦2×105 。
对于每组测试数据,输出一个整数,表示所求的最小区间长度;如果无法通过一次操作使数组不再保持非严格递增,输出 −1 。
输入
2
4 2
1 2 3 3
3 1
2 6 8
输出
1
-1
说明
在第一个测试中,可选择区间 [2,2] ,此时 a2←2+(2−2+1)×2=4,数组变为 ,满足非严格递增,区间长度为 1 。