#CF3722. 让他增加

让他增加

题目描述

给定 nn 个整数 a1,a2,,ana_1,a_2,…,a_n。你可以对它们执行以下操作:

选择任何元素 ai(1in)a_i(1≤i≤n),并将其除以 2(向下取整)。换句话说,你可以用值 ai/2⌊a_i/2⌋(其中 x⌊x⌋ 是向下取整 xx )替换任何选择的元素 aia_i

输出必须进行的操作的最小数量,使得整数序列变得严格递增(即满足 a1<a2<<ana_1<a_2<⋯<a_n 的条件)。或者确定无法获得这样的序列。请注意,不能交换元素。唯一可能的操作如上所述。

输入格式

输入的第一行包含一个整数 t(1t104)t(1≤t≤10^4)-输入中测试用例的数量。

接下来是测试用例的描述。

每个测试用例的第一行包含一个整数 n(1n30)n(1≤n≤30)

每个测试用例的第二行恰好包含 nn 个整数 a1,a2,,an(0ai2109)a_1,a_2,…,a_n(0≤a_i≤2⋅10^9)

输出格式

对于每个测试用例,在单独的一行上输出一个数字,表示需要执行的最少操作数,使得序列变为严格递增。如果无法获得严格递增序列,则打印 -1

测试样例

7
3
3 6 5
4
5 3 2 1
5
1 2 3 4 5
1
1000000000
4
2 8 7 5
5
8 26 5 21 10
2
5 14
2
-1
0
0
4
11
0

样例说明

第一个测试用例已在题目描述中分析。

第二个测试用例无法得到严格递增的序列。

第三个测试用例已经是严格递增的序列了。