AT_arc209_d [ARC209D] A_A_i
Description
長さ $ N $ の数列 $ A = (A_1, A_2, \ldots, A_N) $ が与えられます。 各要素は $ 1 $ 以上 $ N $ 以下の整数もしくは $ -1 $ です。
すぬけ君はこの数列 $ A $ を用いて新しい数列を作ることにしました。
まず、この数列 $ A $ に登場する $ -1 $ を全て $ 1 $ 以上 $ N $ 以下の整数に書き換えます。
次に、以下の式に従って長さ $ N $ の数列 $ B = (B_1, B_2, \ldots, B_N) $ を作ります。
- $ B_i=A_{A_i} $
$ B $ としてありうるもののうち辞書順で最小のものを求めてください。
$ T $ 個のテストケースが与えられるので、それぞれについて解いてください。
数列の辞書順とは?数列 $ C = (C_1,C_2,\ldots,C_N) $ が数列 $ D = (D_1,D_2,\ldots,D_N) $ より**辞書順で小さい**とは、ある整数 $ 1 \leq i \leq N $ が存在して、下記の $ 2 $ つがともに成り立つことを言います。
- $ (C_1,C_2,\ldots,C_{i-1}) = (D_1,D_2,\ldots,D_{i-1}) $
- $ C_i $ が $ D_i $ より(数として)小さい。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ T $ $ case_1 $ $ case_2 $ $ \vdots $ $ case_T $
各ケースは以下の形式で与えられる。
> $ N $ $ A_1 $ $ A_2 $ $ \dots $ $ A_N $
Output Format
各テストケースに対する、 $ B $ としてありうるもののうち辞書順で最小のものを改行区切りで出力せよ。
Explanation/Hint
### Sample Explanation 1
$ 1 $ 番目のテストケースにおいて、すぬけ君が書き換える前の数列 $ A $ は $ (4,-1,-1,3) $ です。
すぬけ君が $ A=(4, 3, 1, 3) $ と書き換えたとします。
このとき、 $ B=(A_4, A_3, A_1, A_3)=(3, 1, 4, 1) $ となります。
これよりも辞書順で小さい数列 $ B $ を得ることはできません。
### Constraints
- $ 1 \le T \le 10^5 $
- $ 1 \le N \le 5 \times 10^5 $
- $ 1 \le A_i \le N $ または $ A_i = -1 $
- すべてのテストケースにわたる $ N $ の総和は $ 5\times 10^5 $ 以下
- 入力はすべて整数