#include<bits/stdc++.h>
using namespace std;
struct node{
int x;
int step;
};
queue<node> q;
int a[300];
int b[300];
int n,m,k;
void bfs(int x){
b[x]=1;
node b1;
b1.x=x;
b1.step=0;
q.push(b1);
while(!q.empty()){
node b2;
b2=q.front();
q.pop();
if(b2.x==k){
cout<<b2.step<<endl;
return;
}
if(b[b2.x+a[b2.x]]==0&&a[b2.x]+b2.x<=n){
b[b2.x+a[b2.x]]=1;
node b3;
b3.x=b2.x+a[b2.x];
b3.step=b2.step+1;
q.push(b3);
}
if(b[b2.x+a[b2.x]]==0&&b2.x-a[b2.x]>0){
b[b2.x-a[b2.x]]=1;
node b4;
b4.x=b2.x-a[b2.x];
b4.step=b2.step+1;
q.push(b4);
}
}
cout<<"-1";
}
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
bfs(m);
return 0;
}