#include<bits/stdc++.h>
using namespace std;
const int maxn=550;
struct node
{
int f,d;
};
queue<node> q;
int n,l,r,a[maxn];
bool vis[maxn];
int main()
{
scanf("%d%d%d",&n,&l,&r);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
q.push((node){l,0});
while(!q.empty())
{
node p=q.front();
q.pop();
if(p.f==r)
{
printf("%d",p.d);
return 0;
}
for(int i=-1;i<=1;i+=2)
{
if(p.f+a[p.f]*i>=1&&p.f+a[p.f]*i<=n&&vis[p.f+a[p.f]*i]==0)
{
vis[p.f+a[p.f]*i]==1;
q.push((node){p.f+a[p.f]*i,p.d+1});
}
}
}
printf("-1");
return 0;
}