#include<stdio.h>
#include<queue>
using namespace std;
#define N 202
struct point
{
int x,step;
};
int f[N],st,en,n,a[N];
int bfs()
{
memset(f,0,sizeof(f));
queue<point>q;
point cur,next;
int x,y;
cur.step=0;cur.x=st;
f[st]=1;
q.push(cur);
while(!q.empty())
{
cur=q.front();
q.pop();
if(cur.x==en)
return cur.step;
x=cur.x+a[cur.x];
y=cur.x-a[cur.x];
if(x>0&&x<=n&&f[x]==0)
{
next.x=x;next.step=cur.step+1;
f[x]=1;
q.push(next);
}
if(y>0&&y<=n&&f[y]==0)
{
next.x=y;next.step=cur.step+1;
f[x]=1;
q.push(next);
}
}
return -1;
}
int main()
{
int i,temp;
while(scanf("%d",&n),n)
{
scanf("%d%d",&st,&en);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
temp=bfs();
printf("%d\n",temp);
}
return 0;
}