1 #include<iostream>
2 using namespace std;
3 int lc[1000001];
4 int tot=10001;
5 int n;
6 int beginn;
7 int endn;
8 int vis[1001];
9 void dfs(int now,int step)
10 {
11 if(step>tot)
12 return;
13 if(now==endn)
14 {
15 if(step<tot)
16 tot=step;
17 return;
18 }
19 else
20 {
21 vis[now]=1;
22 if(now-lc[now]>0&&vis[now-lc[now]]==0)
23 {
24 dfs(now-lc[now],step+1);
25 }
26 if(now+lc[now]<=n&&vis[now+lc[now]]==0)
27 {
28 dfs(now+lc[now],step+1);
29 }
30 vis[now]=0;
31 }
32 }
33 int main()
34 {
35
36 cin>>n>>beginn>>endn;
37 for(int i=1;i<=n;i++)
38 {
39 cin>>lc[i];
40 }
41 dfs(beginn,0);
42 if(tot!=10001)
43 cout<<tot;
44 else
45 {
46 cout<<-1;
47 }
48 return 0;
49 }