#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<stdio.h>
using namespace std;
const int N=210;
int head[N],e[N],ne[N],idx=0;
int n,A,B;
bool ju[N];
void add(int a,int b)
{
e[idx]=b;
ne[idx]=head[a];
head[a]=idx++;
}
int dfs (int a,int b)
{
int sum=0;
int i;
if(a==b) return 0;
queue <int> q;
q.push(a);
ju[a]=true;
while(q.size())
{
int j=q.front();
q.pop();
for(i=head[j];i!=-1;i=ne[i])
{
if(!ju[e[i]])
{
ju[e[i]]=true;
sum++;
if(e[i]==b)break;
q.push(e[i]);
}
}
}
if(e[i]!=b) return -1;
else return sum;
}
int main()
{ int num;
memset(head, -1, sizeof head);
memset(ju, false,sizeof ju);
scanf("%d %d %d",&n,&A,&B);
for(int i=1;i<=n;i++)
{
cin>>num;
if(i+num<=n) add(i,i+num);
if(i-num>0) add(i,i-num);
}
cout<<dfs(A,B)<<endl;
system("pause");
return 0;
}```