#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6;
int k[maxn];
bool p[maxn];
int n;
int a;
int b;
queue<int> q1;
void bfs(int i){
while(1){
if(q1.empty()) {
cout<<-1;
return ;
}
for(int j=1;j<=q1.size();j++){
int x=q1.front()+k[q1.front()];
int y=q1.front()-k[q1.front()];
if(q1.front()==b) {
cout<<i;
return ;
}
if(x<=n&&!p[x]) {
q1.push(x);
p[x]=true;
}
if(y>0&&!p[y]) {
q1.push(y);
p[y]=true;
}
q1.pop();
}
++i;
}
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++) cin>>k[i];
q1.push(a);
bfs(0);
}