#P995. 选拔队员

选拔队员

背景

随着WZOI的老一辈人员的离开,WZOI的人数越来越少了。CJH教练于是想选拔一些人进入团队。。。。。。

问题描述

这一天,许多的学生齐聚在机房的门口,等待这CJH教练的出现。。。

CJH教练过了不久就来了,他看见那么多人来参加。虽然十分高兴,但是机房的位置十分有限,于是他要淘汰一部分人。

CJH教练说:“各位同学,十分高兴你们能来到这个机房。但是机房内的电脑的数目十分有限,现在如果你们能答出下面这个问题,那么你们就能成为团队的一份子。注意听,问题是这样子的:‘机房内总共有N(这个值CJH教练会告诉你)个位置,排列成一条直线,从左往右编号为1到N。现在你们中的N个人要坐到这N个位置上去,问总共有多少中安排的方法。”

所有同学大呼太难了,于是CJH教练决定简化问题:从同学中选出若干个男生和若干多个女生(即男女生的数目随便定)安排到机房内的N个位置上去,要求任意两位女生不能相邻(即任意两个女生之间必须有至少一个男生),问总共有多少种方法,你们姑且可以认为所有男生是等价的,所有女生是等价的。

CJH为了再次降低难度,他只要求你将方案种数mod M即可。

当然,由于这个问题简化之后太简单了,于是CJH会用不同的N提问多次,这样他就可以淘汰许多没能力的人了。

为了能顺利进入WZOI,许多同学向WZOI的朋友求救。显然你就是他们的救星了,现在将CJH教练的问题告诉你,要求你输出正确答案。

输入格式seat.in

输入数据第一行包含两个整数T,M,分别表示测试数据的组数和要将结果mod M;

接下来T行,每行有一个整数N,表示机房里总共有N个位置。

输出格式seat.out

输出数据共T行,每行一个整数S,表示总的方案数mod M之后的那个数。

样例输入输出

2 3
1
3
2
2
2 5
9
5
4
3

数据规模

对于10%的数据,N≤100,T≤10;

对于30%的数据,N≤1000,T≤100;

对于50%的数据,N≤1000000,T≤1000;

对于100%的数据,N≤1000000000,T≤10000;

对于100%的数据,M≤10。