B. 逆 KMP
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Walk Alone 是一个字符串大师,但是他已经对传统的字符串算法感到无聊,如 KMP 算法,所以他最近在思考逆向的 KMP。下面是他提出的问题:

给你一个长度为 $$$n$$$ 的整数序列 $$$a$$$,对于任意的整数 $$$i\ (1\le i\le n)$$$,满足 $$$0\le a_i \lt i$$$。你需要构造另一个整数序列 $$$s$$$,满足以下条件:

  • 序列 $$$s$$$ 的长度为 $$$n$$$,并且其中任意元素 $$$s_i$$$ 满足 $$$1\le s_i\le n$$$;
  • 对于所有的整数 $$$i\ (1\le i\le n)$$$ 和 $$$j\ (1\le j\le a_i)$$$,满足 $$$s_{j}=s_{i-a_i+j}$$$;
  • 满足上述条件的前提下,序列 $$$s$$$ 中出现的不同元素的数量最多。

当然,Walk Alone 可以很轻松地解决这道题,但他想把这道题当作对你的考验。

Input

第一行包含一个整数 $$$n\ (1\le n\le 2\cdot 10^5)$$$,表示序列 $$$a$$$ 的长度。

第二行包含 $$$n$$$ 个整数,其中第 $$$i$$$ 个整数定义为 $$$a_i\ (0\le a_i \lt i)$$$。

Output

输出用空格间隔的 $$$n$$$ 个整数,其中第 $$$i$$$ 个整数定义为 $$$s_i$$$。如果存在多个合法答案,请输出字典序最小的那个。

Examples
Input
5
0 0 1 2 3
Output
1 2 1 2 1 
Input
11
0 0 0 0 2 1 0 0 3 0 1
Output
1 2 3 1 2 1 1 2 3 4 1