作为一名程序语言方向的博士生,九条可怜每天的工作就是和各种各样的程序(函数)打交道。今天,她遇到了一个简洁有趣的问题,于是就把它出成了比赛题目。
众所周知,给定整数 $m$,将 $\{1,\dots,m\}$ 映射到 $\{1, \dots, m\}$ 的函数一共有 $M=m^m$ 个。可怜把这些函数记作 $f_1, \dots, f_M$。
可怜首先从 $[1,M]$ 中(独立等概率地)随机了两个整数 $a,b$,然后从 $[1,m]$ 中(独立等概率地)随机了 $2n$ 个整数 $x_1, \dots, x_n$ 和 $y_1, \dots, y_n$。
现在,可怜想要知道对于每一个 $i \in [1,n]$,$f_{a}(x_i)$ 都等于 $f_b(y_i)$ 的概率,即 $\Pr[\wedge_{i=1}^n f_a(x_i)=f_b(y_i)]$。
输入格式
第一行包含三个整数 $n,m,P (1 \leq n \leq 40, 1 \leq m \leq 10^8, 10^8 < P \leq 10^9)$。
输入保证 $P$ 是一个质数。
输出格式
输出一行一个整数,表示概率对 $P$ 取模后的结果。
样例数据
样例 1 输入
1 2 998244353
样例 1 输出
499122177
样例 2 输入
2 2 998244353
样例 2 输出
686292993
样例 3 输入
10 7 998244353
样例 3 输出
59788847
样例解释
在前两个样例中,概率的真实值分别为 $1/2$ 和 $5/16$。
子任务
子任务一($6$ 分),$1 \leq n,m \leq 5$。
子任务二($21$ 分),$1 \leq n,m \leq 30$。
子任务三($32$ 分),$1 \leq n,m \leq 40$。
子任务四($41$ 分),$1 \leq n \leq 40, 1 \leq m \leq 10^8$。