#P11621. 简单的普及组计数

简单的普及组计数

简单的普及组计数 (counting)

对于一个字符集 Σ\Sigma 上的字符串 SS 和常数 kk,定义删去 SS 中的 kk 个相邻且相同的字符为一次操作。

现字符集的大小 Σ=m|\Sigma| = m. 试求 Σ\Sigma 上能通过 nn 次操作得到空串的字符串数量。答案对质数 pp 取模。

比如字符集 Σ={a,b,c}\Sigma = \{\text{a}, \text{b}, \text{c}\} 时 且 k=2k = 2 时,abbcca\text{abbcca} 符合上述条件而 abbca\text{abbca} 不符合。

输入格式 (counting.in)

一行,四个正整数 nn, mm, kk, pp,用空格分隔。

输出格式 (counting.out)

一行,一个非负整数,符合条件的字符串个数对 pp 取模的结果。

样例输入

3 3 2 99991

样例输出

87

数据规模与子任务

对于所有数据,1n,k1091 \leq n, k \leq 10^9, 1m<p<1051 \leq m < p < 10^5, pp 是素数。

Subtask 1 (1010 pts): n3000,k=2n \leq 3000, k = 2

Subtask 2 (1010 pts): n2×105,k=2n \leq 2 \times 10^5, k = 2

Subtask 3 (1010 pts): n5×106n \leq 5 \times 10^6, k=2k = 2;

Subtask 4 (1010 pts): k=2k = 2;

Subtask 5 (1010 pts): n3000n \leq 3000;

Subtask 6 (1010 pts): n2×105n \leq 2 \times 10^5;

Subtask 7 (1010 pts): n×k107n \times k \leq 10^7;

Subtask 8 (3030 pts): 无特殊限制。

TL: 2s2s

ML: 256MB256MB

提示

这是一道水题。