#define _USE_MATH_DEFINES #include using namespace std; //template #define rep(i,a,b) for(int i=(int)(a);i<(int)(b);i++) #define ALL(v) (v).begin(),(v).end() using ll=long long int; const int inf = 0x3fffffff; const ll INF = 0x1fffffffffffffff; const double eps=1e-12; templateinline bool chmax(T& a,T b){if(ainline bool chmin(T& a,T b){if(a>b){a=b;return 1;}return 0;} ll mod(ll a,ll m){return (a%m+m)%m;} ll mpow(ll a,ll t,ll m){ ll res=1; while(t){ if(t&1)res=mod(res*a,m); a=mod(a*a,m); t>>=1; } return res; } ll minv(ll a,ll m){ ll b=m,u=1,v=0; while(b){ ll t=a/b; a-=t*b; swap(a,b); u-=t*v; swap(u,v); } u=mod(u,m); return u; } int get_root(int p){ //primitive root vector ds; for(int x=1;x*x<=p-1;x++)if((p-1)%x==0){ ds.push_back(x); if(x*x!=p-1)ds.push_back((p-1)/x); } sort(ALL(ds)); ds.pop_back(); for(int x=1;x>n>>m; fact[0]=1; rep(x,1,n+1)fact[x]=(fact[x-1]*x)%m; ifac[n]=minv(fact[n],m); for(int x=n-1;x>=0;x--)ifac[x]=(ifac[x+1]*(x+1))%m; dp[0][0]=1; rep(i,0,n){ rep(j,0,n){ rep(add,1,n+1)if(i+add<=n){ dp[i+add][j+1]=(dp[i+add][j+1]+((((dp[i][j]*fact[n-1-i])%m*ifac[add-1])%m*ifac[n-i-add])%m*(add==1?1:mpow(add,add-2,m)))%m)%m; } } } rep(x,0,n){ cout<