#include<bits/stdc++.h>
using namespace std;
int n,a,b;
int k[201];
int sum[201];//步数
void dfs(int f,int step){
// cout<<f<<endl;
if(f==b) sum[b]=min(sum[b],step-1);
else {
int tf=f+k[f];//向上
if(tf>1&&tf<=n&&sum[tf]>step+1){//在舞台上,并且步数更少
sum[tf]=step+1;
dfs(tf,step+1);
}
tf=f-k[f];//向下
if(tf>1&&tf<=n&&sum[tf]>step+1) {
sum[tf]=step+1;
dfs(tf,step+1);
}
}
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++) {
cin>>k[i];
sum[i]=10086;//最值
}
dfs(a,1);
if(sum[b]==10086) sum[b]=-1;
cout<<sum[b];
return 0;
}
/**************************************************************
Problem: 1819
User: liuchengxuan
Language: C++
Result: Accepted
Time:21 ms
Memory:2076 kb
****************************************************************/