#include <bits/stdc++.h>
using namespace std;
int q[210][3],head=1,tail=1;
int a[210];
bool f[210];
int n,x,y,i;
int main(){
cin>>n>>x>>y;
for(i = 1;i <= n;i++){
cin>>a[i];
}
//如果不需要移动楼层
if(x == y){
cout<<0;
return 0;
}
q[1][1] = x;
q[1][2] = 0;//次数
f[x] = true;//该层到过了
while(head <= tail){
int flag = 1;
for(int i = 1;i <= 2;i++){
int to = q[head][1] + a[q[head][1]] * flag;
//是正常的楼层,且没走过
if(to >= 1 && to <= n && f[to] == false){
tail++;
q[tail][1] = to;
q[tail][2] = q[head][2] + 1;
f[to] = true;
if(to == y){
cout<<q[tail][2];
return 0;
}
}
flag = flag * -1;
}
head++;
}
cout<<-1;
}
/**************************************************************
Problem: 1819
User: admin
Language: C++
Result: Accepted
Time:21 ms
Memory:2076 kb
****************************************************************/