KUPC 2025 (Open) 2026/03/28 09:00 ~ 2026/03/28 14:00 5:00:00.000

J Sum of max of iai

問題
制限時間: 4 sec メモリ制限: 1024 MB
Sum of max of iai
Statement

正整数 \(N\) と素数 \(P\) が与えられます。

\(1,2,\cdots,N\) の順列 \((a_1,a_2,\cdots,a_N)\) に対し、その スコア \(f(a)\) を以下の通りに定めます。

\[f(a) = \max\{ia_i\ |\ i=1,2,\cdots,N\}\]

全ての順列にわたるスコアの総和を \(P\) で割ったあまりを求めてください。

Input

\(1\) 行に \(N,P\) がこの順に空白区切りで与えられる。 ( \(1\leq N\leq 10^4, 10^8\leq P\lt 10^9,P\) は素数)

Output

すべての順列にわたるスコアの総和を \(P\) で割ったあまりを出力してください。

Examples

Input 1
10 100000007
Output 1
77379290
Input 2
1000 998244353
Output 2
168695631

Note

\(1\) つ目のサンプルについて、例えば \(f(3,9,4,10,8,2,7,5,6,1)=54\) です。

\(10!\) 個全ての順列にわたるスコアの総和は \(277379304\) ですが、これを素数 \(P=10^8+7\) で割った余りの \(77379290\) を出力してください。 この入力における素数 \(P\) は \(9\) 桁の整数 \(10^8+7\) であることに注意してください。