#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int n,a,b,k[N],vis[N];
struct node{
int floor;
int num;
};
void bfs(){
memset(vis,-1,sizeof(vis));
queue<node>q;
q.push((node){a,0});
while(!q.empty()){
node now=q.front();
q.pop();
if(b==now.floor){
cout<<now.num;
return;
}
int last1=now.floor+k[now.floor];
int last2=now.floor-k[now.floor];
if(last1>n || last2<0 || vis[last1]==-1 || vis[last2]==-1) continue;
vis[last1]=0;vis[last2]=0;
q.push((node){last1,now.num+1});
q.push((node){last2,now.num+1});
}
cout<<-1;
return;
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++){
cin>>k[i];
}
bfs();
return 0;
}