#include<stdio.h>
#include<string.h>
#include<iostream>
#include<queue>
using namespace std;
int every[210] = { 0 };
queue<pair<int, int> > q;
int visit[210] = { 0 };
int main()
{
int now = 0;
int step = 0;
int totalstorey;
scanf("%d", &totalstorey);
int beginstorey = 0, endstorey = 0;
scanf("%d %d", &beginstorey, &endstorey);
for (int i = 1; i <=totalstorey; i++)
{
scanf("%d", &every[i]);
}
q.push(make_pair(beginstorey, step));
while (q.size())
{
now = q.front().first;
step = q.front().second;
q.pop();
/*printf("%d", q.front().first);
printf("\n");*/
if (q.front().first==endstorey)
{
break;
}
if (now+every[now]<=totalstorey&& !visit[now + every[now]])
{
q.push(make_pair(now + every[now], step + 1));
visit[now + every[now]] = 1;
}
if (now-every[now]>=1&& !visit[now - every[now]])
{
q.push(make_pair(now - every[now], step + 1));
visit[now - every[now]] = 1;
}
}
if (q.front().first==endstorey)
{
printf("%d", q.front().second);
}
else
{
printf("-1");
}
}