#include <bits/stdc++.h>
using namespace std;
int N, A, B, y[99999], vis[99999];
struct kkk{
int d, step;
kkk(int a = 0, int b = 0) {d = a; step = b;}
}s[9999];
int bfs(int x){
int tail = 0, head = 0;
s[tail++] = kkk(x,0);
vis[x] = 1;
while(head < tail){
kkk cur = s[head++];
if(cur.d == B) return cur.step;
if(y[cur.d] == 0) continue;
if(cur.d + y[cur.d] <= B && !vis[cur.d + y[cur.d]])
s[tail++] = kkk(cur.d+y[cur.d],cur.step+1);
if(cur.d - y[cur.d] >= 1 && !vis[cur.d - y[cur.d]])
s[tail++] = kkk(cur.d-y[cur.d],cur.step+1);
}
return -1;
}
int main(){
scanf("%d %d %d", &N, &A, &B);
for(int i=1;i<=N;i++) scanf("%d", &y[i]);
printf("%d", bfs(A));
return 0;
}