#13421. 【状压DP练习题】消消乐【模板-按格点转移DP】

【状压DP练习题】消消乐【模板-按格点转移DP】

其实也不是太模板。

题目描述

某人开发了一个消消乐游戏。

这个游戏的初始局面是一个n×mn\times m的矩阵,每个位置有一只小动物,编号为1,...,k1,...,k之一。

显然,这个局面有knmk^{nm}种之多。

如果一行或者一列中相邻的三个小动物是一样的,就会被消掉,那么游戏一开始难度就太低了。

问:有多少种初始局面满足任意三个相邻的小动物都不全一样。输出答案mod Pmod \ P

输入格式

多组数据,请使用while(cin>>n>>m>>k>>P)while (cin>>n>>m>>k>>P)来读入。

最多4040组数据。

n=m=6,k4,P1e9+7n=m=6,k\leq 4,P\leq 1e9+7

输出格式

对于每一个输入,输出一个答案。

样例 #1

样例输入 #1

1 1 1 998244353
2 2 3 998244353
1 3 1 998244353
3 3 3 998244353

样例输出 #1

1
81
0
9750

提示

请使用按格点转移的方式来写,主要是帮你练练按格点转移。

此外不要打表。