#CF2600D. Iris 与相邻乘积

Iris 与相邻乘积

D. Iris 与相邻乘积

时间限制:3 秒
内存限制:256 MB

Iris 刚刚在数学课上学了乘法。然而,由于她的大脑无法承受太复杂的计算,她无法计算乘积大于 kk 的两个整数。否则,她的大脑可能会爆炸!

老师每天布置一道难题作为暑假作业。现在她得到一个包含 nn 个元素的数组 aa,她需要计算每两个相邻元素的乘积(即 a1a2a_1 \cdot a_2a2a3a_2 \cdot a_3,依此类推)。Iris 希望她的大脑安全运作,为此她想修改数组 aa,使得对每个 1i<n1 \le i < n 都有 aiai+1ka_i \cdot a_{i+1} \le k。她可以执行两种操作:

  1. 她可以任意重排数组 aa 的元素。
  2. 她可以选择数组 aa 中的任意一个元素,将其值改为 11kk 之间的任意整数。

Iris 希望最小化她使用的类型 2 操作的次数。

然而,暑假还没结束!暑假持续 qq 天,在第 ii 天,Iris 需要解决子数组 bli,bli+1,,brib_{l_i}, b_{l_i+1}, \dots, b_{r_i} 的数学作业。帮助 Iris 并告诉她每天所需的最小类型 2 操作次数。注意,每天的操作是独立的,即数组 bb 不会被修改。


输入格式

每个测试点包含多个测试用例。第一行包含一个整数 tt1t51041 \le t \le 5 \cdot 10^4)—— 测试用例的数量。

每个测试用例的第一行包含三个整数 nnqqkk2n1052 \le n \le 10^51q1051 \le q \le 10^51k1061 \le k \le 10^6)—— 数组 bb 的长度、天数以及乘积的上限。

每个测试用例的第二行包含 nn 个整数 b1,b2,,bnb_1, b_2, \dots, b_n1bik1 \le b_i \le k)—— 数组 bb 的元素。

接下来 qq 行,每行包含两个整数 lil_irir_i1li<rin1 \le l_i < r_i \le n)—— 第 ii 天作业的子数组边界。

数据保证:所有测试用例的 nn 之和不超过 10510^5,所有测试用例的 qq 之和不超过 10510^5


输出格式

对于每个测试用例,输出一行,包含 qq 个整数 —— 每天所需的最小类型 2 操作次数。


示例

输入

5
3 1 1
1 1 1
1 3
3 2 10
1 10 9
1 3
2 3
5 4 2
2 2 2 2 2
1 2
2 4
2 5
1 5
6 5 10
3 2 5 10 10 1
1 4
3 6
1 6
2 5
5 6
10 10 10
10 9 8 7 6 5 4 3 2 1
1 10
1 9
1 8
1 7
2 10
3 10
4 10
5 10
3 9
6 8

输出

0 
0 1 
1 1 2 2 
1 1 1 1 0 
3 3 4 3 2 2 1 1 2 1 

样例解释

第一个测试用例:因为 Iris 总是可以计算 111 \cdot 1,所以不需要任何操作,答案为 00

第二个测试用例

  • 第一天作业为 [1,10,9][1,10,9]。Iris 可以重排为 [9,1,10][9,1,10],因此不需要类型 2 操作。
  • 第二天作业为 [10,9][10,9],她可以修改一个元素得到 [1,9][1,9],因此需要 11 次类型 2 操作。