問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
n 人の人が時刻 1 から n まで投票をおこなうことになりました。選択肢は 1 と 2 の 2 つです。i 番目の人は、時刻 i に、自分の意思 a_i または時刻 i - 1 までの投票結果において多数派だった選択肢 b_i に等確率で投票します。ただし、時刻 i - 1 までの投票結果において選択肢 1 と 2 が同数だった場合、a_i に投票します。
最終的に得られる投票結果における選択肢 1 の割合の期待値を q / r として、この値を q × r^(-1) mod (10^9 + 7) の形式で求めてください。(0 ≦ q < r)
ただし、r^(-1) は mod 10^9 + 7 における r の逆元を表します。
n
a_1 a_2 ... a_n
最終的に得られる投票結果の期待値を既約分数 q / r として、この値を q × r^(-1) mod (10^9 + 7) の形式で出力してください。
出力の最後に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件を満たします。
・ 1 ≦ n ≦ 1000
・ a_i は 1 または 2 (1 ≦ i ≦ n)
5
1 2 1 1 2
600000005
10
1 1 1 1 1 1 1 1 1 1
1