#P5071. 「FJSC2018PJD6T2」新飞行棋

「FJSC2018PJD6T2」新飞行棋

Description

期末考试终于结束了。Andy同学感觉松了一口气,他决定重温小时候的快乐时光——下飞行棋。

但是他弄丢了传统飞行棋需要的骰子,因此他发明了一种新型的飞行棋游戏,规则如下:棋盘上有n个格子,由近到远分别编号为 11nn。对于 1in1\le i \le n,第 ii 个格子上写着一个正整数 NiN_i。当玩家处于第 aa 个格子时,他可以选择往后走 NaN_a 步,或者往前倒退 NaN_a 步。当然如果 Na+a>nN_a + a > n ,那么他就只能选择后退;同理如果 aNa<1a-N_a<1 ,那么他就只能选择前进。保证不会出现既不能前进又不能后退的格子。

Andy学完编程后对一个问题很感兴趣:从编号 ss 出发,至少需要经过几把,可以到达 tt 点?(例如在 aa 点选择往前走 NaN_a 步,称之为一把)。

Input Format

从文件fly.in中读取数据。

第一行三个整数,分别为 nnsstt 意义如题面所述。

第二行 nn 个正整数,第 ii 个数为 NiN_i

Output Format

输出到文件fly.out中去。

一个数,为最少经过的把数。如果 ss 无法到达 tt,输出 1-1

Sample

样例输入1

6 6 4
1 2 2 3 1 2

样例输出1

1

Hint

对于前 10%10\% 的数据,s=ts=t

对于前 40%40\% 的数据,n200n\leq 200;

对于另外 10%10\% 的数据,ss 无法到达 tt

对于 100%100\% 的数据,n200000n \leq 200000;