#include<bits/stdc++.h>
using namespace std;
int n,b,a,k[202],ans[202];
struct Node{
int x,step;
};
void Bfs(){
queue<Node> q;
q.push({a,0});
while(q.size()){
Node now=q.front();
//cout<<now.x<<endl;
if(now.step>1000){
cout<<-1;
exit(0);
}
if(now.x==b){
cout<<now.step;
return;
}
for(int i=1;i<=2;i++){
int tx=now.x+k[now.x];
//cout<<" "<<tx<<endl;
if(tx>=1&&tx<=n){
q.push({tx,now.step+1});
}
k[now.x]=-k[now.x];
}
q.pop();
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>a>>b;
for(int i=1;i<=n;i++) cin>>k[i];
Bfs();
return 0;
}
/**************************************************************
Problem: 1819
User: chenxurui
Language: C++
Result: Accepted
Time:23 ms
Memory:2236 kb
****************************************************************/