F - (Divisors Counter)^{-1}

2 secs 1024 MB
uni_kakurenbo's icon uni_kakurenbo

マルチテストについての説明はこちら (サンプル問題を確認されていない方のみお読みください。)


配点:200200

問題文

NN 個の非負整数 A1,A2,,ANA_1, A_2, \ldots, A_N と空の列 XX があります.

また,次の操作を何度でも行えます:

  • XX の末尾に好きな正整数を追加する.

さらに,正整数 nn に対して f(n)f(n) を次のように定めます:

  • f(n):=(Xkf(n) := (X_knn の(正の)約数であるような kk の個数))
    • より形式的には,任意の正整数 nn について f(n)={k ⁣:xZ+  xXk=n}f(n) = |\{\, k \colon \exist_{\,x \in \Z^+} \; x X_k = n \,\}| が満たされる.
    • なお 1kX1 \leq k \leq |X| なる整数 kk に対して XXkk 番目の要素を XkX_k と表す.

1kN1 \leq k \leq N なる任意の整数 kk について f(k)=Akf(k) = A_k が満たされるようにすることが目標です.

この目標が達成可能か判定し,可能な場合はそのために必要な操作回数の最小値を求めてください.

制約

  • 1Φ1051 \leq \Phi \leq 10^5
  • 1N1 \leq N
  • ϕΦϕ(N)106\sum_{\phi} \Phi_{\phi}(N) \leq 10^6
  • 0Ai<230(1iN)0 \leq A_i < 2^{30} \scriptsize \; (1 \leq i \leq N)
  • 入力はすべて整数

入力

各テストケースの入力は,それぞれ以下の形式で与えられる:

NN
A1A2ANA_1 \enspace A_2 \enspace \ldots \enspace A_N

出力

操作によって目標が達成できるならば,それを達成するために必要な操作回数の最小値を出力せよ.
操作によって目標が達成できないならば,-1 と出力せよ.

サンプル

入力例1
1
5
2 2 3 3 3
出力例1
5

たとえば X=(3,1,4,1,5)X = (3, 1, 4, 1, 5) とすると,条件が満たされます.
55 回未満の操作で目標を達成することはできないので,55 が答えです.


入力例2
2
5
4 3 2 1 0
4
0 1 0 1
出力例2
-1
1

提出


Go (1.21)