2146. 奥运队形

单点时限: 5.0 sec

内存限制: 256 MB

奥运圣火经过我们学校的时候,学校规定参观奥运圣火的同学的不能很混乱,要排成奥运队形。奥运队形就是 : 在 NM 的方阵中,不能出现 22 的方格同时站男生或者女生(因为这个符合我们学校的特色),否则就不是奥运队形。

现在给定 N 和 M,学校领导想知道有多少种不同的奥运队形,并且让辅导员计算出来。学校领导可以肯定队形中 N<=10100 ,并且由于结果特别大,他们只想知道结果 %P。这下可难坏了辅导员老师,辅导员老师想请你帮下忙,你也可以趁机在辅导员面前展示一下你的编程技能了。

例如 3*3 的方阵,我们假定黑色代表男生,白色代表女生。那么图一的三幅图是奥运队形,而图二的三幅图是不是奥运队形。

输入格式

输入第一行一个 C(1<=C<=20) 表示测试数据的组数。

后面 C 行,每行三个整数 N (1<= N <=10^100), M (1 <= M <= 5) and P (1 <= P <= 10000).

输出格式

对于每组测试数据你需要输出 N*M 方阵中有多少种不同的奥运队形。结果对 P 取模。

样例

Input
2
2 2 5
3 3 23
Output
4
0
Hint:
对于测试数据1: 2*2的有14种不同的奥运队形,我们用仍然用黑色的方格代表男生,白色的方格代表女生。所以结果为14%5=4,下图说明不同的队形:

2 人解决,15 人已尝试。

6 份提交通过,共有 50 份提交。

9.7 EMB 奖励。

创建: 15 年,10 月前.

修改: 6 年,7 月前.

最后提交: 3 年,4 月前.

来源: 第一届程序设计竞赛

题目标签