AT_pakencamp_2025_day3_j Set Sequence

Description

正整数 $ N $ 、素数 $ P $ 、長さ $ N $ の $ P $ 未満の要素からなる正整数列 $ A=(A_1,A_2,\dots,A_N) $ が与えられます。 $ S=\lbrace 1,2,\dots,N\rbrace $ とします。 以下の条件をすべて満たす長さ $ 1 $ 以上の集合の列 $ T $ の個数を $ P $ で割った余りを求めてください。 - $ T $ の要素はすべて $ S $ の**空でない**部分集合 - $ i=1,2,\dots,N $ について、以下が成り立つ - $ T $ の要素のうち、 $ i $ を含むものはちょうど $ A_i $ 個

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ P $ $ A_1 $ $ A_2 $ $ \dots $ $ A_N $

Output Format

答えを出力せよ。

Explanation/Hint

### Sample Explanation 1 $ T $ としてありうるのは $ (\lbrace 1,2\rbrace,\lbrace 2\rbrace),(\lbrace 2\rbrace,\lbrace 1,2\rbrace),(\lbrace 1\rbrace,\lbrace 2\rbrace,\lbrace 2\rbrace),(\lbrace 2\rbrace,\lbrace 1\rbrace,\lbrace 2\rbrace),(\lbrace 2\rbrace,\lbrace 2\rbrace,\lbrace 1\rbrace) $ の $ 5 $ 通りです。 ### Sample Explanation 2 $ T $ の個数を $ P $ で割った余りで求めることを忘れないでください。 ### Constraints - $ 1\leq N\leq 2\times 10^5 $ - $ 113\leq P\leq 500009 $ - $ P $ は素数 - $ 1\leq A_i\lt P $ $ (1\leq i\leq N) $ - 入力はすべて整数