class Solution
{
public:
void solve(vector<int>&arr,int n,int N,int s,int e,int cnt,int &ans)
{
if(n<0)
{
return;
}
if(s<=0 && e>=N)
{
ans=min(ans,cnt);
}
solve(arr,n-1,N,min(n-arr[n],s),max(n+arr[n],e),cnt+1,ans);
solve(arr,n-1,N,s,e,cnt,ans);
}
int minTaps(int n, vector<int>& arr)
{
int cnt=0;
int ans=INT_MAX;
int s=INT_MAX;
int e=INT_MIN;
int N=n;
solve(arr,n,N,s,e,cnt,ans);
if(ans==INT_MAX)
{
return -1;
}
return ans;
}
};