#CF1995C. C. 平方操作

C. 平方操作

C. 平方操作
每次测试时间限制:2秒
内存限制:256兆字节

ikrpprpp 有一个由整数组成的数组 aa。他追求公平,因此希望使数组 aa 变成非递减的。为此,他可以对数组的某个下标 1in1 \le i \le n 执行一次“公正操作”,该操作会将 aia_i 替换为 ai2a_i^2(即把第 ii 个元素替换为其平方)。
例如,若 a=[2,4,3,3,5,3]a = [2,4,3,3,5,3],ikrpprpp 选择对 i=4i=4 执行一次公正操作,则 aa 变为 [2,4,3,9,5,3][2,4,3,9,5,3]

问:最少需要执行多少次公正操作,才能使数组变为非递减?如果不可能做到,输出 1-1


输入
第一行包含一个整数 tt1t10001 \le t \le 1000)——测试用例的数量。接下来是每个测试用例的描述。
每个测试用例:

  • 第一行包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5)——数组 aa 的大小。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1061 \le a_i \le 10^6)。

所有测试用例的 nn 之和不超过 21052 \cdot 10^5


输出
对于每个测试用例,输出一个整数——使数组变为非递减所需的最少公正操作次数。如果不可能做到,输出 1-1


示例
输入

7
3
1 2 3
2
3 2
3
3 1 5
4
1 1 2 3
3
4 3 2
9
16 2 4 2 256 2 4 2 8
11
10010 10009 10008 10007 10006 10005 10004 10003 10002 10001 10000

输出

0
1
-1
0
3
15
55

注释

  • 第一个测试用例:数组已经非递减,无需操作。
  • 第三个测试用例:可以证明数组无法变成非递减。
  • 第五个测试用例:ikrpprpp 可以依次对下标 332233 执行操作。之后数组变为 [4,9,16][4,9,16]