bool canReach(vector<int>& arr, int start) {
vector<int> visited(arr.size(), false);
for(int i = 0, size = q.size(); i < size; i++) {
start = q.front(); q.pop();
if (arr[start] == 0) return true;
if (start - arr[start] >= 0 && visited[start - arr[start]] == false) {
q.push(start - arr[start]);
visited[start - arr[start]] = true;
if (start + arr[start] < arr.size() && visited[start + arr[start]] == false) {
q.push(start + arr[start]);
visited[start + arr[start]] = true;