#include<bits/stdc++.h>
using namespace std;
int n,m,A,B;
int flag=0,ans=0x3f3f3f,vis[205];
int a[205];
void dfs(int k,int step){
if(vis[k]||step>ans)return;
if(k<1||k>n)return;
if(k==B){
flag=1;
ans=min(ans,step);
return ;
}
vis[k]=1;
dfs(k+a[k],step+1);
dfs(k-a[k],step+1);
}
int main()
{
cin>>n>>A>>B;
fill(vis,vis+205,0);
for(int i=1;i<=n;i++)cin>>a[i];
dfs(A,0);
if(!flag)cout<<"-1"<<endl;
else cout<<ans<<endl;
}