1 #include<iostream>
2 #include<queue>
3 using namespace std;
4
5 int n,a,b;
6
7 int map[205],vis[205];
8
9 void bfs(int s,int e)
10 {
11 queue<int> q;
12 q.push(s);
13 vis[s]=1;//标记
14 int t;//用于保存首元素
15 while(!q.empty())
16 {
17 t=q.front();//获取第一个元素
18 q.pop();//将第一个元素弹出,首元素变成第二个
19 if(t==e)
20 break;//若是满足条件则跳出
21
22 int next=t+map[t];//向上走
23 if(next>=1 && next<=b && vis[next]==0)
24 {
25 q.push(next);
26 vis[next]=vis[t]+1;
27 }
28
29 next=t-map[t];//向下走
30 if(next>=1 && next<=b && vis[next]==0)
31 {
32 q.push(next);
33 vis[next]=vis[t]+1;
34 }
35 }
36 if(t!=e)
37 vis[b]=0;
38 }
39
40 int main()
41 {
42 while(cin>>n && n)
43 {
44 cin>>a>>b;
45 for(int i=1;i<=n;i++)
46 cin>>map[i];
47 memset(vis,0,sizeof(vis));
48 bfs(a,b);
49 cout<<vis[b]-1<<endl;
50 }
51 return 0;
52 }