AT_agc071_e [AGC071E] Procrastinate Counter

Description

$ (1,2,\dots,N) $ の順列 $ P=(P_1,P_2,\dots,P_N) $ に対し、長さ $ N $ の整数列 $ f(P) $ を以下のように定めます。 - 整数列 $ X $ を $ X=(P_1,P_2,\dots,P_N) $ で初期化し、 $ X $ が単調増加数列になるまで以下の操作を行い続ける。なお、任意の順列 $ P $ に対し、 $ X $ は有限回の操作によって単調増加数列になることが示せる。 - $ X_i > X_{i+1} $ を満たす最小の $ i\ (1 \leq i < N) $ を $ k $ とする。 $ X $ の $ k $ 項目を末尾に移動する。より正確には、 $ X $ を $ (X_1,X_2,\dots,X_{k-1},X_{k+1},X_{k+2},\dots,X_N,X_{k}) $ で置き換える。 一連の操作で整数 $ x $ が末尾に移動させられた回数を $ C_x $ とし、 $ f(P)=(C_1,C_2,\dots,C_N) $ と定める。 $ f(P) $ としてありうるものの種類数を素数 $ M $ で割った余りを求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ M $

Output Format

答えを出力せよ。

Explanation/Hint

### Sample Explanation 1 例えば $ P=(1,4,3,2) $ の場合、 $ X $ は $ X=(1,4,3,2) $ で初期化され、操作は以下のように行われます。 1. $ X_1 \leq X_2 $ かつ $ X_2 > X_3 $ であるため、 $ X_2=4 $ が末尾に移動し、 $ X $ は $ (1,3,2,4) $ に変化する 2. $ X_2=3 $ が末尾に移動し、 $ X $ は $ (1,2,4,3) $ に変化する 3. $ X_3=4 $ が末尾に移動し、 $ X $ は $ (1,2,3,4) $ に変化する $ 1,2,3,4 $ が末尾に移動させられた回数はそれぞれ $ 0,0,1,2 $ 回であるため、 $ f(P)=(0,0,1,2) $ となります。 ### Constraints - $ 1 \leq N \leq 500 $ - $ 10^8 \leq M \leq 10^9 $ - $ M $ は素数 - 入力される値はすべて整数