#include<bits/stdc++.h>
using namespace std;
int n,a,b;
int k[205];
struct node
{
int h;
int step;
};
node s,t;
int vis[205];
bool flag=0;
queue<node> q;
void bfs()
{
s.step=0;
vis[s.h]=1;
q.push(s);
while(!q.empty());
{
node tmp=q.front();
if(tmp.h==t.h)
{
cout<<tmp.step;
flag=1;
return;
}
if(tmp.h+k[tmp.h]<=n&&!vis[tmp.h+k[tmp.h]])
{
node a;
a.h=tmp.h+k[tmp.h];
a.step=tmp.step+1;
q.push(a);
vis[a.h]=1;
}
if(tmp.h-k[tmp.h]>0&&!vis[tmp.h-k[tmp.h]])
{
node a;
a.h=tmp.h-k[tmp.h];
a.step=tmp.step+1;
q.push(a);
vis[a.h]=1;
}
}
}
int main()
{
cin>>n>>a>>b;
s.h=a;
t.h=b;
for(int i=1;i<=n;i++)
{
cin>>k[i];
}
bfs();
if(flag==0)
{
cout<<-1;
}
return 0;
}