#include<bits/stdc++.h>
using namespace std;
struct node{
	int a,step1;
};
int n,b,a,k[201],ans; 
bool w[201];
queue<node> q;
void bfs(){
	q.push({b,0});
	w[b]=1;
	while(!q.empty()){
		int xx,xstep;
		xx=q.front().a;
		xstep=q.front().step1;
		//cout<<xx+k[xx]<<" "<<xx-k[xx]<<endl; 
		if(xx+k[xx]>=1&&xx+k[xx]<=n){
//			cout<<endl;&&w[xx]==0
			w[xx]=1;
			q.push({xx+k[xx],xstep+1});
			if(xx+k[xx]==a){
				ans=xstep+1;
				break;
			}
		}
		if(xx-k[xx]>=1&&xx-k[xx]<=n){
//			cout<<endl;&&w[xx]==0
			w[xx]=1;
			q.push({xx-k[xx],xstep+1});
			if(xx-k[xx]==a){
				ans=xstep+1;
				break;
			}
		}
		q.pop();
	}
	if(ans==0){
		cout<<-1;
		return;
	}
	else{
		cout<<ans;
		return;
	}
}
int main(){
	cin>>n>>b>>a;
	for(int i=1;i<=n;i++)
	{
		cin>>k[i];
	}
	bfs();
}
/**************************************************************
	Problem: 1819
	User: wuyunfeng
	Language: C++
	Result: Time Limit Exceed
****************************************************************/