#include #include #define ll long long ll inv(ll x, int mod){ if(x==1)return 1; return (1-inv(mod%x,x)*mod)/x+mod; } ll modpow(ll x,ll n,ll m){ if(n==0)return 1; ll ret=modpow(x,n/2,m); ret=ret*ret%m; if(n%2)return ret*x%m; return ret; } ll witness[]={2,7,61}; int isprime(int n){ if(n==2)return 1; if(n<2||n%2==0)return 0; ll d=(n-1)/(n-1&1-n); for(int i=0;i<3;i++){ if(witness[i]>=n)return 1; ll t=d; ll a=modpow(witness[i],t,n); if(a==1||a==n-1)continue; while(a!=n-1){ t*=2; a=a*a%n; if(t==n-1)return 0; if(a==1)return 0; } } return 1; } ll calc_primitiveroot(int P){ int remainder[32]={}; int cnt=0; int ord=P-1; for(ll i=2;i*i<=ord;i++)if(ord%i==0){ while(ord%i==0)ord/=i; remainder[cnt++]=P/i; } if(ord!=1)remainder[cnt++]=P/ord; for(ll g=2;;g++){ int flag=1; for(int i=0;i=0;j--)temp[j+A[i]]=(temp[j+A[i]]+temp[j]*zeta)%P; sum+=A[i]; } for(int i=0;i<=S;i++)dp[i]+=temp[i]; } int invc=inv(c,P); for(int i=0;i<=S;i++)dp[i]=dp[i]%P*invc%P; dp[0]=0; } ll ans[4][100010]; int main(){ int mod,C; scanf("%d%d%d",&N,&mod,&C); for(int i=0;i=N?C:N-C; int P=1000000000/CC*CC+1; ll Ps[4]; for(int i=0;i<4;i++,P+=CC){ while(!isprime(P))P+=CC; solve(P,CC,ans[i]); Ps[i]=P; } ll r[4]; for(int i=1;i<=S;i++){ for(int j=0;j<4;j++)r[j]=ans[j][2*C>=N?i:S-i]; int ret=garner(r,Ps,mod); if(i==S&&2*C==N)ret=(ret-1+mod)%mod; printf("%d%c",ret,i==S?10:32); } }