#include <bits/stdc++.h>
using namespace std;
int n,a,b,ans=INT_MAX-1;
int t[250];
bool v[250];
void dfs(int n,int k)
{
if(n==b)
ans=min(ans,k);
if(k>ans)
return;
v[n]=1;
if(n+t[n]<=n&&!v[n+t[n]])
dfs(n+t[n],k+1);
if(n-t[n]>=1&&!v[n-t[n]])
dfs(n-t[n],k+1);
v[n]=0;
}
int main()
{
cin >> n>>a>>b;
for(int i=1;i<=n;i++)
cin >> t[i];
v[a]=1;
dfs(a,0);
if(ans!=INT_MAX-1)
cout << ans<<endl;
else
cout << -1<<endl;
return 0;
}
https://www.luogu.com.cn/record/132016977