#include <iostream>
#include <queue>
using namespace std;
const int N=201;
int dt[N],n,b;
int k[N];
std::queue<int>q1;
std::queue<int>q2;
inline int bbfs(int x,int bs){
if(x+k[x]>=1&&x+k[x]<=n&&dt[x+k[x]]==0){
if(x+k[x]==b)return bs+1;
q1.push(x+k[x]);q2.push(bs+1),dt[x+k[x]]=1;
}
if(x-k[x]>=1&&x-k[x]<=n&&dt[x-k[x]]==0){
if(x-k[x]==b)return bs+1;
q1.push(x-k[x]);q2.push(bs+1),dt[x-k[x]]=1;
}
return 0;
}
inline int bfs(){
while(q1.size()){
int t=bbfs(q1.front(),q2.front());
if(t)return t;
q1.pop();q2.pop();
}
return -1;
}
int main(){
int a;
std::cin >>n>>a>>b;
for(int i=1;i<=n;i++)std::cin >>k[i];
q1.push(a);q2.push(0);
std::cout <<bfs();
return 0;
}