有一只小跳蛙参加跳格子比赛。
比赛规则如下:
地上有一排格子,第i(1≤i≤N)个格子里有一个数字k(0≤k≤N),如果跳蛙处在第i个格子上,则它可以往左或者往右跳ki格,注意不能跳出格子外。
例如:1,2,3..., (k1=1,k2=2,....) ,表示如果跳蛙在第一个格子上可以往右跳一格,但是不能往左跳,否则将会跳出格子外。
给定两个格子的编号a(1≤a≤N) 和 b(1≤b≤N),要求跳蛙从第a个格子跳跃到第b个格子。现在小跳蛙来求助你,它应该如何跳,才能使得跳跃次数最少。
输入
输入共两行。
第一行为三个正整数N,a,b。N(1≤N≤150)表示格子的总数,a表示跳蛙起始处在第a个格子,b表示跳蛙最终要跳到第b个格子。
第二行为N个非负整数,表示ki。
输出
输出共一行。
即跳蛙最少需要跳跃几次可以到达,若无法到达输出-1。
样例
标准输入 复制文本 |
2 1 2 1 1 |
标准输出 复制文本 |
1 |
标准输入 复制文本 |
5 1 5 3 3 1 2 5 |
标准输出 复制文本 |
3 |
标准输入 复制文本 |
3 1 3 1 2 1 |
标准输出 复制文本 |
-1 |
提示
样例一:小跳蛙一开始处在第一个格子上,于是它只需要往右跳一次即可到达目标点。
样例二:小跳蛙一开始处在第一个格子上,
第一次:从第一个格子往右跳到第四个格子上
第二次:从第四个格子往左跳到第二个格子上
第三次:从第二个格子往右跳到第五个格子上
样例三:小跳蛙一开始处在第一个格子上,
无论如何跳都不可能跳到目标格子上。