#CF2081B. 平衡操作

平衡操作

B. 平衡操作

  • 每次测试的时间限制:2 秒
  • 每次测试的内存限制:512 兆字节

Ecrade 有一个整数数组 a1,a2,,ana_1, a_2, \dots, a_n
保证对于每个 1i<n1 \le i < n,有 aiai+1a_i \neq a_{i+1}

Ecrade 可以执行若干次操作,使数组变为严格递增。

在每次操作中,他可以选择两个整数 llrr1lrn1 \le l \le r \le n),并将 al,al+1,,ara_l, a_{l+1}, \dots, a_r 替换为任意 rl+1r-l+1 个整数 al,al+1,,ara'_l, a'_{l+1}, \dots, a'_r,需满足以下条件:

对于每个 li<rl \le i < raia'_iai+1a'_{i+1} 的比较关系必须与 aia_iai+1a_{i+1} 的比较关系相同,即:

  • 如果 ai<ai+1a_i < a_{i+1},那么 ai<ai+1a'_i < a'_{i+1}
  • 如果 ai>ai+1a_i > a_{i+1},那么 ai>ai+1a'_i > a'_{i+1}
  • 如果 ai=ai+1a_i = a_{i+1},那么 ai=ai+1a'_i = a'_{i+1}

Ecrade 想知道使数组严格递增所需的最少操作次数。请帮助他!


输入
每个测试点包含多个测试用例。
第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。
接下来是每个测试用例的描述:

每个测试用例的第一行包含一个整数 nn2n21052 \le n \le 2 \cdot 10^5)。
第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n109ai109-10^9 \le a_i \le 10^9)。
保证对于每个 1i<n1 \le i < n,有 aiai+1a_i \neq a_{i+1}
保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5


输出
对于每个测试用例,输出一个整数,表示使数组严格递增所需的最少操作次数。


示例

输入:

4
3
3 2 1
3
3 1 2
4
-2 -5 5 2
7
1 9 1 9 8 1 0

输出:

2
1
1
3

说明
在第一个测试用例中,一种得到最少操作次数的方法:

  • 第一次操作:选择 l=2,r=2l = 2, r = 2,并设 a2=4a'_2 = 4,则数组变为 [3,4,1][3, 4, 1]
  • 第二次操作:选择 l=1,r=2l = 1, r = 2,并设 a1=1,a2=0a'_1 = -1, a'_2 = 0,则数组变为 [1,0,1][-1, 0, 1]

在第二个测试用例中,一种得到最少操作次数的方法:

  • 第一次操作:选择 l=2,r=3l = 2, r = 3,并设 a2=4,a3=5a'_2 = 4, a'_3 = 5,则数组变为 [3,4,5][3, 4, 5]

在第三个测试用例中,一种得到最少操作次数的方法:

  • 第一次操作:选择 l=2,r=3l = 2, r = 3,并设 a2=1,a3=1a'_2 = -1, a'_3 = 1,则数组变为 [2,1,1,2][-2, -1, 1, 2]