#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[1000],x,d[1000],c[1000];
queue<int>Q;
int bfs(int u)
{
Q.push(u);
while(!Q.empty())
{
x=Q.front();
Q.pop();
for(int i=0;i<2;i++)
{
int fx[2]={k[x],-k[x]};
if(x+fx[i]<1||x+fx[i]>n||d[x+fx[i]]&&c[x+fx[i]]<c[x]+1)continue;
x+=fx[i];
d[x]=1;
c[x]=c[x-fx[i]]+1;
if(x==b)return c[x];
Q.push(x);
}
}
return -1;
}
int main()
{
cin>>n>>a>>b;
for(int i=1;i<=n;i++)cin>>k[i];
if(a==b)cout<<0;
else cout<<bfs(a);
}