# Description

$a$ is an array of $n$ positive integers, all of which are not greater than $n$.

You have to process $q$ queries to this array. Each query is represented by two numbers $p$ and $k$. Several operations are performed in each query; each operation changes $p$ to $p + a_p + k$. There operations are applied until $p$ becomes greater than $n$. The answer to the query is the number of performed operations.

# Input

The first line contains one integer $n$ ($1 \leq n \leq 100000$).

The second line contains $n$ integers — elements of $a$ ($1 \leq a_i \leq n$ for each $i$ from 1 to $n$).

The third line containts one integer $q$ ($1 \leq q \leq 100000$).

Then $q$ lines follow. Each line contains the values of $p$ and $k$ for corresponding query ($1 \leq p, k \leq n$).

# Output

Print $q$ integers, $i$th integer must be equal to the answer to $i$th query.

# Solutions

在不考虑时间复杂度的情况下，我们可以得到两种做法。

一种是暴力计算操作次数，其时间复杂度为$O(\frac{n}{k})$

另一种是DP计算，设$f(i)$表示在$i$处需要的操作数，其时间复杂度为$O(n)$。

暴力计算的好处是，时间复杂度与$k$相关；DP计算的好处是，对于相同的$k$，能够$O(1)$得知答案。

考虑平衡两种做法。首先对询问进行离线，按照$k$排序。

接着设定一个阀值$m$，当$k \leq m$时选择暴力，当$m \leq k$时选择DP。

根据均值不等式可得，$m$取$\sqrt q$时，能最小化总时间复杂度。

时间复杂度$O(n \sqrt q)$