#include<bits/stdc++.h> using namespace std; int n,b,a,k[202],ans[202]; struct Node{ int x,step; }; void Bfs(){ queue<Node> q; q.push({a,0}); while(q.size()){ Node now=q.front(); //cout<<now.x<<endl; if(now.step>1000){ cout<<-1; exit(0); } if(now.x==b){ cout<<now.step; return; } for(int i=1;i<=2;i++){ int tx=now.x+k[now.x]; //cout<<" "<<tx<<endl; if(tx>=1&&tx<=n){ q.push({tx,now.step+1}); } k[now.x]=-k[now.x]; } q.pop(); } } int main(){ ios::sync_with_stdio(false); cin.tie(0); cin>>n>>a>>b; for(int i=1;i<=n;i++) cin>>k[i]; Bfs(); return 0; } /************************************************************** Problem: 1819 User: chenxurui Language: C++ Result: Accepted Time:23 ms Memory:2236 kb ****************************************************************/