#include<bits/stdc++.h>
using namespace std;
const int N=3e5+7;
long long dp[N][2]; long long n,i,a[N];
long long f(long long jd,long long ji)
{
if(dp[jd][ji]!=-1) return dp[jd][ji];
dp[jd][ji]=11451444;
if(a[jd]%2==ji)
{
dp[jd][ji]=0;
return 0;
}
if(jd-a[jd]>=0)
{
dp[jd][ji]=min(dp[jd][ji],f(jd-a[jd],ji));
}
if(jd+a[jd]<n)
{
dp[jd][ji]=min(dp[jd][ji],f(jd+a[jd],ji));
}
dp[jd][ji]++;
return dp[jd][ji];
}
int main()
{
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
}
for(i=0;i<n;i++)
{
dp[i][0]=dp[i][1]=-1;
}
for(i=0;i<n;i++)
{
if(f(i,1-(a[i]%2))==11451445)
{
cout<<-1<<" ";
}
else
{
cout<<f(i,1-(a[i]%2))<<" ";
}
}
return 0;
}
除样例全错