编程题
### 问题描述
时空局的一周有 $11$ 天,这一天,时空局发布紧急任务,有一个时空战犯在今后 $n$ 天的时间线中进行逃窜,由于时空的独特性,我们可以把时间看成节点,也就是每一天看成一个节点。每一天会有一个能量值 $g_i$,我们定义函数 $h(x)$ 为 $x$ 在十进制下的数位和,例如 $h(192) = 1 + 9 + 2 = 12$,同时定义 $f(x)$:
$$
f(x) =
\begin{cases}
x \quad (x \lt 10) \\\\
f(h(x)) \quad (x \ge 10)
\end{cases}
$$
当两个时间节点满足 $f(g')$ 相同时,那么这两个时间可以相互传送;或者两个时间点恰好相隔一周时,也可以相互传送。
一个战犯在 $1 \sim n$ 的时间节点中逃窜,时空局会派出若干的时空战警,每个战警会选择一个任意节点 $S_t$ 作为起始节点然后选择一些时间节点开始巡逻,具体来说,需要满足以下性质,假设该时空战警巡逻的点为 $a_1,a_2,a_3,...,a_k$,那么需要满足以下条件:
1. $a_1 \lt a_2 \lt a_3 \lt ... \lt a_k$。
2. 对于 $i \gt 1$,需要满足 $f(g_{a_i}) = f(g_{a_{i-1}})$ **或者**满足 $|g_{a_i}$ - $g_{a_{i-1}}| = 11$。
同时由于时空串扰的关系,每两个时空战警之间巡逻的时空节点之间不能存在相同的点,例如:$A$ 战警巡逻 $\lbrace 1, 4, 5\rbrace$,$B$ 战警巡逻 $\lbrace 2, 3, 6\rbrace$,这是合法的;但是如果$B$ 战警巡逻 $\lbrace 2, 3, 4\rbrace$,就会发生时空串扰,产生不可预料的后果。
时空局都是一群很聪明的人,他们想要派出最少的人,使得每一个时空节点都会至少有一个时空战警巡逻到。
于是时空局伟大的机器 Timer 开始计算,当派出 $1$ 个人的时候,最多可以巡逻到多少个点?当派出 $2$ 个人的时候,最多可以巡逻多少个点? ······ 当派出 $n$ 个人的时候最多可以巡逻多少个点?
突然,时空光圈发出巨大的光芒,你回过神来发现,你变成了 Timer,你开始执行这些计算任务。
具体来说,你需要回答当派出 $1 \sim n$ 个人时,分别最多可以巡逻到多少个时空节点。
### 输入格式
第一行输入一个整数 $n$,表示时空节点的数量。
第二行输入 $n$ 个整数 $g_1, g_2, g_3, ..., g_i ,..., g_n$,表示第 $i$ 天的能量值。
### 输出格式
输出一行,包含 $n$ 个整数 $t_1, t_2, t_3, ..., t_n$,用空格隔开,表示在派出 $i$ 个人时可以巡逻的最多的节点数量。
### 样例输入
```
4
9 29 45 32
```
### 样例输出
```
2 3 4 4
```
### 说明
- 派出一个人时,一种最多的巡逻方案是:$\lbrace 1,3 \rbrace$。
- 派出两个人时,一种最多的巡逻方案是:$\lbrace 1,3 \rbrace, \lbrace 2 \rbrace$。
- 派出三个人时,一种最多的巡逻方案是:$\lbrace 1,3 \rbrace, \lbrace 2 \rbrace, \lbrace 4 \rbrace$。
- 派出四个人时,一种最多的巡逻方案是:$\lbrace 1 \rbrace,\lbrace 2 \rbrace, \lbrace 3 \rbrace, \lbrace 4 \rbrace$。
### 评测数据范围
$1 \le n \le 5000, 1 \le g_i \le 10^9$。