#include <bits/stdc++.h>
using namespace std;
int n, a, b, tot[250], vis[250], f;
queue < pair <int , int> > Q;//first 代表层数, second 代表步数
void bfs()
{
Q.push(make_pair(a , 0));
while(!Q.empty())
{
pair<int , int>front = Q.front();
Q.pop();
if(front.first == b)
{
f = 1;
break;
}
int change = tot[front.first];//改变的层数
int big = front.first + change;//变大后的层数
int small = front.first - change;//变小后的层数
if (big >= 1 and big <= n and vis[big] == 0)
{
vis[big] = 1;
Q.push(make_pair(big , front.second + 1));
}
if (small >= 1 and small <= n and vis[small] == 0)
{
vis[small] = 1;
Q.push(make_pair(small , front.second + 1));
}
Q.pop();
}
}
int main(void)
{
cin >> n >> a >> b;
for (int i = 1; i <= n; i++)
cin >> tot[i];
bfs();
cout << (f == 1?Q.front().first:-1);
return 0;
}
40分求神犇告诉错在哪了,样例没过