Iris 刚刚在数学课上学习了乘法。然而,由于她的脑力无法承受过于复杂的计算,她不能将两个乘积大于 $k$ 的整数相乘。否则,她的脑袋可能会爆炸!
她的老师每天都会布置一项艰巨的任务作为她的暑假作业。现在,她得到了一个由 $n$ 个元素组成的数组 $a$,她需要计算每两个相邻元素的乘积(即 $a_1 \cdot a_2, a_2 \cdot a_3$ 等)。Iris 希望她的脑力安全运转,为了做到这一点,她希望修改数组 $a$,使得对于每个 $1 \le i < n$,都有 $a_i \cdot a_{i+1} \le k$ 成立。她可以执行以下两种类型的操作:
- 她可以以任意方式重新排列数组 $a$ 的元素。
- 她可以任选数组 $a$ 中的一个元素,并将其值修改为 $1$ 到 $k$ 之间的任意整数。
Iris 希望最小化她使用的第 2 类操作的次数。
然而,这完全不是暑假的终点!暑假持续 $q$ 天,在第 $i$ 天,Iris 被要求完成子数组 $b_{l_i}, b_{l_i+1}, \dots, b_{r_i}$ 的数学作业。请帮助 Iris,并告诉她每天需要执行的第 2 类操作的最小次数。请注意,每天的操作是相互独立的,即数组 $b$ 不会被改变。
输入格式
每个测试点包含多个测试用例。第一行包含一个整数 $t$ ($1 \le t \le 5 \cdot 10^4$) — 测试用例的数量。接下来是测试用例的描述。
每个测试用例的第一行包含三个整数 $n, q$ 和 $k$ ($2 \le n \le 10^5, 1 \le q \le 10^5, 1 \le k \le 10^6$) — 数组 $b$ 的长度、天数以及乘法计算的上限。
每个测试用例的第二行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$ ($1 \le b_i \le k$) — 数组 $b$ 的元素。
接下来 $q$ 行,其中的第 $i$ 行包含两个整数 $l_i$ 和 $r_i$ ($1 \le l_i < r_i \le n$) — 第 $i$ 天子数组的边界。
保证所有测试用例中 $n$ 的总和不超过 $10^5$,且所有测试用例中 $q$ 的总和不超过 $10^5$。
输出格式
对于每个测试用例,输出一行,包含 $q$ 个整数 — 每天所需的第 2 类操作的最小次数。
样例
输入样例 1
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
输出样例 1
0 0 1 1 1 2 2 1 1 1 1 0 3 3 4 3 2 2 1 1 2 1
说明
在第一个测试用例中,由于 Iris 总是可以将 1 和 1 相乘,因此不需要任何操作,所以答案是 0。
在第二个测试用例中,第一天的作业是 $[1, 10, 9]$。Iris 可以重新排列其元素得到 $[9, 1, 10]$,因此不需要第 2 类操作。第二天的作业是 $[10, 9]$,她可以修改一个元素得到数组 $[1, 9]$,因此需要 1 次第 2 类操作。