//公开TJ可耻/doge
#include<bits/stdc++.h>
using namespace std;
long long n,a,b,cnt = 1;
long long v[200005],m[200005] = {0};
bool flag = 1;
queue <int> q;
void bfs(){
while(!q.empty()){
long long f = q.front();
q.pop();
long long s = f+v[f],d = f-v[f];
if(s == b || d == b) {flag = 0;break;}
if(1<=s && s<=n && m[s] == 0 && v[s]) q.push(s);
if(1<=d && d<=n && m[d] == 0 && v[d]) q.push(d);
++cnt;
}
if(!flag) cout<<cnt<<endl;
}
int main(){
cin>>n>>a>>b;
if(a == b) {cout<<0<<endl;return 0;}
for(long long i=1;i<=n;++i) cin>>v[i];
q.push(a);
m[a] = 1;
bfs();
if(flag) cout<<-1<<endl;
return 0;
}
###P1105_5.in:
50 1 50
1 1 3 1 1 3 1 1 2 2 1 2 1 3 1 1 3 2 3 1 3 3 3 1 1 1 2 1 3 1 2 1 3 1 3 3 2 3 3 1 1 1 2 1 2 1 3 2 3 0
###P1105_5.out:
24