#include <cstdio>
#include <iostream>
using namespace std;
typedef long long ll;
const int N=3e6+10;
int fict[N],infict[N];
ll qmi(int a,int k,int p)
{
ll res=1;
while(k)
{
if(k&1) res=(ll)res*a%p;
a=(ll)a*a%p;
k>>=1;
}
return res;
}
int main()
{
fict[0]=infict[0]=1;
int n,p;
cin>>n>>p;
for(int i=1;i<=n+1;i++)
{
fict[i]=(ll)fict[i-1]*i%p;
infict[i]=(ll)infict[i-1]*qmi(i,p-2,p)%p;
}
for(int i=1;i<=n;i++)
{
printf("%d\n",(ll)infict[i]*fict[i-1]%p);
}
return 0;
}
为什么后两个点会TLE啊!