class Solution {
public:
    int vis[50001];
    bool canReach(vector<int>& a, int i) {
        if(i<0||i>=a.size()||vis[i])return false;
        if(a[i]==0)return true;
        vis[i]=1;
        return canReach(a,i+a[i])||canReach(a,i-a[i]);
    }
};