#include <bits/stdc++.h>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 210;
int n, a, b;
int k[maxn];
int vi[maxn];
ll res;
void dfs(int cur, ll co) {
if (cur == b) {
res = min(res, co);
return;
} else if (cur < 1)
return;
else if (vi[cur])
return;
else if (co >= cur)
return;
else if (cur > n)
return;
vi[cur] = 1;
dfs(cur + k[cur], co + 1);
dfs(cur - k[cur], co + 1);
vi[cur] = 0;
}
int main() {
scanf("%d%d%d", &n, &a, &b);
for (int i = 1; i <= n; ++i) scanf("%d", k + i);
res = INT_MAX;
dfs(a, 0);
printf("%lld\n", res == INT_MAX ? -1 : res);
return 0;
}
提前判断就不会TLE,dfs之后判断就会TLE