#include<bits/stdc++.h>
using namespace std;
int n,b,a,k[202],ans[202];
struct Node{
	int x,step;
};
void Bfs(){
	queue<Node> q;
	q.push({a,0});
	while(q.size()){
		Node now=q.front();
		//cout<<now.x<<endl;
		if(now.step>1000){
			cout<<-1;
			exit(0);
		}
		if(now.x==b){
			cout<<now.step;
			return;
		}
		for(int i=1;i<=2;i++){
			int tx=now.x+k[now.x];
			//cout<<"    "<<tx<<endl;
			if(tx>=1&&tx<=n){
				q.push({tx,now.step+1});
			}
			k[now.x]=-k[now.x];
		}
		q.pop();
	}
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++) cin>>k[i];
	Bfs();
	return 0;
}

/**************************************************************
	Problem: 1819
	User: chenxurui
	Language: C++
	Result: Accepted
	Time:23 ms
	Memory:2236 kb
****************************************************************/