#include "cstdio"
#include "iostream"
typedef long long LL;
#define CH getchar()
#define INL inline
const int N_=205;
using namespace std;
int a[N_];
bool vis[N_];
struct{int flr,step;}que[30000000];
INL int read(){char c=CH;int s=0,k=1;while (!isdigit(c)){if (c=='-')k=-1;c=CH;}while (isdigit(c)){s=s*10+c-'0';c=CH;}return s*k;}
int main()
{
int n=read();
que[1].flr=read();que[1].step=0;
int b=read();
for(int i=1;i<=n;++i)a[i]=read();
int l=1,r=2;bool flag=1;
while(l<r)
{
if(que[l].flr==b){flag=0;printf("%d\n",que[l].step);break;}
int nflr;
nflr=que[l].flr+a[que[l].flr];
if(nflr<=n&&nflr==b||a[nflr]>0&&!vis[nflr])
{
que[r].flr=nflr;
que[r++].step=que[l].step+1;
vis[nflr]=1;
}
nflr=que[l].flr-a[que[l].flr];
if(nflr>0&&nflr==b||a[nflr]>0&&!vis[nflr])
{
que[r].flr=nflr;
que[r++].step=que[l].step+1;
vis[nflr]=1;
}
++l;
}
if(flag)printf("-1\n");
return 0;
}
#8 #9快乐RE,加了不重搜还这样······