OUPC2025 OPENコンテスト 2026/03/29 09:00 ~ 2026/03/29 14:00 5:00:00.000

L Functional Equation Optimization

問題
制限時間: 2 sec メモリ制限: 1024 MB
Functional Equation Optimization
Statement

長さ \(N\) の正整数列 \(A,B\) が与えられます。

\(1\) 以上 \(N\) 以下の整数に対して定義されて \(1\) 以上 \(N\) 以下の整数を返す関数 \(f\) であって、以下の条件を満たすものを特別な関数と呼ぶことにします。

  • \(1\) 以上 \(N\) 以下の整数 \(n,m\) について、\(\operatorname{lcm}(n,f(m)) \leq N\) ならば \(f(n)m=f(\operatorname{lcm}(n,f(m)))\gcd(f(f(f(n))),m)\)

特別な関数が存在するかどうかを判定し、存在するならば特別な関数を \(f\) のうち \(\max(f(i) \times A_i+B_i)\) が最小となるものを一つ求めてください。

\(1\) つの入力ファイルにつき、\(T\) 個のテストケースを解いてください。

Input

入力は以下の形式で標準入力から与えられます。

\(T\)
\(\mathrm{case}_{1}\)
\(\mathrm{case}_{2}\)
\(\vdots\)
\(\mathrm{case}_{T}\)

\(t\) 番目のテストケース \(\mathrm{case}_t\) は以下の形式で与えられます。

\(N\)
\(A_1~A_2~\dots~A_N\)
\(B_1~B_2~\dots~B_N\)

入力は以下の制約をすべて満たします。

  • \(1 \leq T \leq 2 \times 10^5\)
  • \(1 \leq N \leq 2 \times 10^5\)
  • \(0 \leq A_i \leq 1\)
  • \(0 \leq B_i \leq 10^9\)
  • 全てのテストケースにおける \(N\) の総和は \(2\times 10^5\) 以下
  • 入力は全て整数

Output

答えを合計 \(T\) 行で出力せよ。 \(t\) 行目には、\(t\) 個目のテストケースについて、 特別な関数が存在するならば、条件を満たすものを \(f\) として、以下の形式で出力せよ。

\(f(1)~f(2)~\dots~f(N)\)
存在しないならば
\(-1\)
と出力せよ。

Scoring

以下の追加制約を満たすデータセットに正解した場合、部分点が与えられます。

  • (15点): \(A_i=0\)
  • (35点): \(A_i=1\) となるような \(i\) はちょうど \(1\) つ
  • (50点): 追加制約はありません。

Example

Input 1
3
3
1 1 1
3 2 6
5
1 0 1 0 1
3 1 4 1 5
4
0 0 0 0
0 0 0 0
Output 1
1 3 2
1 2 5 4 3
1 2 3 4