#include<bits/stdc++.h>
#include<queue>
using namespace std;
#define maxn 202
int n,a,b;
int k[maxn];
int drt[3]={0,1,-1};
bool have=false;
struct node{
int floor;
int time_;
}abc;
queue<node> q;
node u,d;
int main(){
scanf("%d%d%d",&n,&a,&b);
for (int i=1;i<=n;i++) cin>>k[i];
abc.floor=a;
abc.time_=0;
q.push(abc);
while (!q.empty()){
u=q.front();
q.pop();
if (u.floor==b){
have=true;
break;
}
for (int i=1;i<=2;i++){
if (u.floor+k[u.floor]*drt[i]<1||u.floor+k[u.floor]*drt[i]>n) continue;
d.floor=u.floor+k[u.floor]*drt[i];
d.time_=u.time_+1;
q.push(d);
}
}
if (!have){
cout<<-1;
return 0;
}
cout<<u.time_;
return 0;
}