#include<bits/stdc++.h>
#define ull unsigned long long
using namespace std;
int n,a,b,num[1000005],ans[1000005];
int f(int x,int q,int t){
if(x==b) return q;
ans[t]=0,ans[t+1]=0;
if(x-num[x]>0){
ans[t]=f(x-num[x],q+1,t+2);
}
if(x+num[x]<=n){
ans[t+1]=f(x+num[x],q+1,t+2);
}
if(ans[t]==-1 || ans[t+1]==-1){
return -1;
}
if(ans[t]==0) {
if(ans[t+1]==0){
return -1;
}
return ans[t+1];
}
if(ans[t+1]==0){
return ans[t];
}
return min(ans[t],ans[t+1]);
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
cin>>num[i];
cout<<f(a,0,1);
return 0;
}