#include<bits/stdc++.h> using namespace std; int const MAXN=205; int n,a,b,k[MAXN],dist[MAXN]; queue q; int main() { cin>>n>>a>
#include<bits/stdc++.h>
using namespace std;
int const MAXN=205;
int n,a,b,k[MAXN],dist[MAXN];
queue<int> q;
int main() {
cin>>n>>a>>b;
for(int i=1; i<=n; i++) {
dist[i]=-1;
cin>>k[i];
}
q.push(a);
dist[a]=0;
while(!q.empty()) {
int y=q.front();
int up=y+k[y],down=y-k[y];
q.pop();
if(up >=1 &&up<=n &&dist[up]==-1) {
dist[up] = dist[y] + 1;
q.push(up);
if (up == b) {
cout << dist[up];
return 0;
}
}
if(down>=1 && down <= n&&dist[down]==-1) {
dist[down] = dist[y] + 1;
q.push(down);
if (down == b) {
cout << dist[down];
return 0;
}
}
}
if(n==1&&k[1]==0) {
cout<<0;
} else {
cout<<-1;
}
return 0;
}
b; for(int i=1; i<=n; i++) { dist[i]=-1; cin>>k[i]; } q.push(a); dist[a]=0; while(!q.empty()) { int y=q.front(); int up=y+k[y],down=y-k[y]; q.pop(); if(up >=1 &&up<=n &&dist[up]==-1) { dist[up] = dist[y] + 1; q.push(up); if (up == b) { cout << dist[up]; return 0; } } if(down>=1 && down <= n&&dist[down]==-1) { dist[down] = dist[y] + 1; q.push(down); if (down == b) { cout << dist[down]; return 0; } } } if(n==1&&k[1]==0) { cout<<0; } else { cout<<-1; } return 0; }