#include <bits/stdc++.h>
using namespace std;
int n, a, b, ans;
bool flag=true;
int k[100010];
void dfs1(int floor){
if(floor==a)
return;
if(floor>a){
flag=false;
return;
}
if(floor<a){
ans++;
floor+=k[floor];
}
dfs1(floor);
}
void dfs2(int floor){
if(a<b){
if(floor==b)
return;
if(floor>b){
flag=false;
return;
}
if(floor<b){
ans++;
floor+=k[floor];
}
dfs2(floor);
}
else{
if(floor==b)
return;
if(floor<b){
flag=false;
return;
}
if(floor>b){
ans++;
floor+=k[floor];
}
dfs2(floor);
}
}
int main(){
cin >> n >> a >> b;
for(int i=1; i<=n; i++)
cin >> k[i];
if(a==b){
cout << 0;
return 0;
}
dfs1(1);
if(!flag){
cout << -1;
return 0;
}
flag=true;
dfs2(a);
if(!flag){
cout << -1;
return 0;
}
cout << ans;
return 0;
}