AT_pakencamp_2018_day2_c クリスマス飾り(Christmas Decorations)

Description

[problemUrl]: https://atcoder.jp/contests/pakencamp-2018-day2/tasks/pakencamp_2018_day2_c クリスマスの飾りつけとして、$ N $ 個のオーナメントを一列に並べることにしました。 オーナメントの色(例えば、赤・青・金など)は $ N $ 種類あり、それぞれ番号が $ 1 $, $ 2 $, ..., $ N $ と付けられています。 左から $ i $ 個目のオーナメントは、番号 $ a_i $ の色の飾りつけにすることを決めました。ただし、まだ色が決まっていないオーナメントは、$ a_i\ =\ 0 $ として表されます。 あなたは、クリスマスの飾りつけの「周期」をできるだけ短くするようにしたいです。 クリスマス飾りの「周期」は、以下のように定義されます。 - 左から数えて最初の $ X $ 個のオーナメントの色が、その後も繰り返されている (ただし最後の部分が途切れていても良い) ような $ X $ の中で、最小の $ X $ が「周期」である。 - つまり、左から $ i $ 番目のオーナメントの色が $ p_i $ のとき、全ての $ i $ $ (1\ \leq\ i\ \leq\ N-X) $ において $ p_i\ =\ p_{i+X} $ となっている $ X $ の中で最小の $ X $ が「周期」である。 - 例えば、$ p\ =\ (1,\ 3,\ 2,\ 1,\ 3,\ 2,\ 1,\ 3) $ の場合「周期」 $ =\ 3 $、$ p\ =\ (1,\ 3,\ 5,\ 5,\ 5,\ 1,\ 3,\ 5,\ 5) $ の場合「周期」 $ =\ 5 $ である。また、全ての色が同じ場合、「周期」 $ =\ 1 $ である。 「周期」が最小になるようにまだ決まっていないオーナメントの色を決めた時、「周期」の値はいくつになるか求めてください。

Input Format

入力は以下の形式で標準入力から与えられます。 > $ N $ $ a_1 $ $ a_2 $ $ a_3 $ ... $ a_N $

Output Format

飾りつけの「周期」として考えられる最小の値を、一行で出力してください。

Explanation/Hint

### 制約 - $ N $ は $ 1 $ 以上 $ 2\ 019 $ 以下の整数 - $ 0\ \leq\ a_i\ \leq\ N $ ### 小課題 小課題 $ 1 $ \[$ 10 $ 点\] - $ N\ \leq\ 3 $ を満たす。 小課題 $ 2 $ \[$ 30 $ 点\] - $ a_i\ \neq\ 0 $ を満たす。 小課題 $ 3 $ \[$ 30 $ 点\] - $ N\ \leq\ 50 $ を満たす。 小課題 $ 4 $ \[$ 30 $ 点\] - 追加の制約はない。 ### Sample Explanation 1 クリスマス飾りの $ 4 $ 番目、$ 8 $ 番目、$ 11 $ 番目の飾りつけの色はまだ決まっていません。それらの色の番号をそれぞれ $ 1 $, $ 2 $, $ 2 $ にすると、以下のような飾りつけになります。 $ (1,\ 2,\ 3,\ 1,\ 2,\ 3,\ 1,\ 2,\ 3,\ 1,\ 2) $ これは、周期が $ 3 $ となります。これ以下の周期となるような色の決め方はないので、$ 3 $ が答えとなります。 ### Sample Explanation 2 全ての色が決まっており、この飾りつけの周期は $ 3 $ となります。 また、この入力例は小課題 $ 1,\ 2 $ 両方の制約を満たします。 ### Sample Explanation 3 飾りつけの色の番号 $ (12,\ 2,\ 4,\ 12,\ 2,\ 4,\ 12,\ 2,\ 4,\ 12,\ 2,\ 4,\ 12) $ にすると、周期が $ 3 $ になります。