#467. 弹簧板(加强)

弹簧板(加强)

有一个小球掉落在一串连续的弹簧板上,小球落到某一个弹簧板后,会被弹到某一个地点,直到小球被弹到弹簧板以外的地方。

假设有 nn 个连续的弹簧板,每个弹簧板占一个单位距离,a[i]a[i] 代表代表第 ii 个弹簧板会把小球向前弹 a[i]a[i] 个距离。比如位置 11 的弹簧能让小球前进 22 个距离到达位置33。如果小球落到某个弹簧板后,经过一系列弹跳会被弹出弹簧板,那么小球就能从这个弹簧板弹出来。现在希望你计算出小球从任意一个弹簧板落下,最多会被弹多少次后,才会弹出弹簧板。

输入格式

第一个行输入一个 nn 代表一共有 n(1n100000)n(1≤n≤100000) 个弹簧板。第二行输入 nn 个数字,中间用空格分开。第 ii 个数字 ai(1ai30)a_i(1≤a_i≤30) 代表第 ii 个弹簧板可以让小球移动的距离。

输出格式

输出一个整数,代表小球最多经过多少次才能弹出弹簧板。

输出时每行末尾的多余空格,不影响答案正确性

要求使用「文件输入输出」的方式解题,输入文件为 spring.in,输出文件为 spring.out

样例输入

5
2 2 3 1 2

样例输出

3