#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e2+10;
int k[MAXN];
int f[MAXN];
bool from[MAXN][MAXN];
inline int read_int() {
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9') {
if(ch=='-') {
w=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9') {
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
int dfs(int n,int i,int fr,int t){
if(i<0){
return 0;
}
if(i>n){
return 0;
}
if(from[fr][i]==true){
if(f[i]<t){
f[i]=t;
}
return f[i];
}
else{
from[fr][i]=true;
}
if(f[i]==-1){
f[i]==0;
}
f[i]+=1;
dfs(n,i+k[i],i,++t);
dfs(n,i-k[i],i,++t);
return f[i];
}
int ret(int n,int a,int b){
int d=dfs(n,a,0,1);
if (d==0){
return -1;
}else{
return d;
}
}
int main() {
memset(f,0xff,sizeof(f));
memset(from,false,sizeof(from));
int n=read_int();
int a=read_int();
int b=read_int();
for(int i=1;i<=n;i+=1){
k[i]=read_int();
}
printf("%i \n",ret(n,a,b));
return 0;
}