#include<bits/stdc++.h>
using namespace std;
const int N=200;
struct node{
int f,cnt;
};
node q[N+10],now;
int n,a,b,k[N+10],h,t,vis[N+20],nxtf,flag;
void bfs(int a,int b){
h=t=1;
q[t++]=(node){a,0};
vis[a]=1;
flag=0;
while(h<t)
{
now.f=a;
if(now.f==b){cout<<now.cnt;flag=1;return;}
nxtf=now.f+k[now.f];
if(now.f>0&&now.f<=n&&vis[now.f]==0)
{
q[t++]=(node){nxtf,now.cnt++};
vis[nxtf]=1;
}
nxtf=now.f-k[now.f];
if(now.f>0&&now.f<=n&&vis[now.f]==0)
{
q[t++]=(node){nxtf,now.cnt++};
vis[nxtf]=1;
}
}
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++) cin>>k[i];
bfs(a,b);
if(flag!=0) cout<<now.cnt;
else cout<<-1;
return 0;
}