C - 陽気な妖姫 解説 /

実行時間制限: 2 sec / メモリ制限: 1024 MB

配点: 300

問題文

いつも明るいいろはちゃんには妖怪の友達が N 人います。 i(1 \leq i \leq N) 人目の身長は H_i です。

友達が増えすぎたいろはちゃんは、友達がどんなひとだったか忘れないように、その友達の名前と一緒にどれくらいの身長だったかも覚えようと思っています。
しかし、いろはちゃんの友達は妖怪なので、身長がとても高いひともいれば、とても低い人もいます。 そのため、いろはちゃんは友達の身長の大小関係を維持したまま、出来るだけ小さい数に置き換えて覚えておきたいです。
具体的には、任意の整数の組 (i, j) について H_i \leq H_j \Leftrightarrow X_i \leq X_j を満たすような正整数の列 X_1,X_2,\cdots,X_N であって、その最大値が最小となるようなものを構築したいです。

いろはちゃんの代わりに N 人の友達の身長を置き換えてあげてください。

制約

  • 入力はすべて整数
  • 1 \leq N \leq 10^5
  • 1 \leq H_i \leq 10^9

入力

以下の形式で与えられます。

N
H_1
H_2
\vdots
H_N

出力

1人目から N 人目まで、身長を置き換えた後の正整数を N 行で出力してください。


入力例 1

3
10
20
30

出力例 1

1
2
3

入力例 2

5
10
20
10
30
55

出力例 2

1
2
1
3
4

入力例 3

2
10000
10000

出力例 3

1
1

解説

解説