奇偶跳跃

题目描述

Y 同学得到了一个长度为 NN 的整数序列 A={a1,a2,,aN}A = \{a_1, a_2, \dots, a_N\}

当他位于序列的第 ii 个位置(1iN1 \le i \le N)时,他可以执行一次跳跃。跳跃的目标位置可以是 iaii - a_i 或者 i+aii + a_i,但前提是目标位置必须在序列的有效范围内(即下标必须在 [1,N][1, N] 之间)。

对于序列中的每一个位置 ii,Y 同学希望计算出:从位置 ii 出发,最少需要经过多少次跳跃,才能到达一个位置 jj,使得 aja_j 的奇偶性与 aia_i 不同(即 ai≢aj(mod2)a_i \not\equiv a_j \pmod 2)。

如果对于某个位置 ii,无法到达任何满足条件的位置,则记为 1-1

输入格式

第一行输入一个正整数 NN,表示序列的长度。

第二行输入 NN 个正整数 a1,a2,,aNa_1, a_2, \dots, a_N,表示序列中的元素。

输出格式

输出一行 NN 个整数,第 ii 个整数表示从位置 ii 出发到达奇偶性不同的位置所需的最少步数。如果无法到达,输出 1-1

样例

样例输入 #1

10
4 5 7 6 7 5 4 4 6 4

样例输出 #1

1 1 1 2 -1 1 1 3 1 1 

数据范围与约定

子任务编号 分值 NN \le
1 20 2020
2 30 20002000
3 50 2×1052 \times 10^5

对于 100%100\% 的数据,保证:

  • 1N2×1051 \le N \le 2 \times 10^5
  • 1aiN1 \le a_i \le N

相关

在下列比赛中:

「果壳杯」 ROUND 35 (Div. 4)