#include<bits/stdc++.h>
#define ll long long
#define mp make_pair
using namespace std;
const int mxn=55;
ll md,n;
ll f[mxn],h[mxn][mxn*mxn],g[mxn][mxn*mxn];
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>md;
	if(n<4){
		cout<<0<<"\n";
		return 0;
	}
	g[0][0]=1;
	for(int i=1;i<=n;++i)
		for(int j=0;j<=i*(i-1)/2;++j)
			for(int k=1;k<=i and j-k+1>=0;++k)
				g[i][j]=(g[i][j]+g[i-1][j-k+1])%md;
	for(int i=1;i<=n;++i){
		h[i][0]=g[i][0];
		for(int j=1;j<=i*(i-1)/2;++j)h[i][j]=(h[i][j-1]+g[i][j])%md;
	}
//	for(int i=1;i<=n;++i){
//		for(int j=0;j<=i*(i-1)/2;++j)cout<<h[i][j]<<' ';
//		cout<<'\n';
//	}
	for(int i=4;i<=n;++i){
		f[i]=1ll*i*f[i-1]%md;
		for(int d=1;d<i;++d){
			ll c=i-d,t=0;
			for(int x=d+1;x<=(i-1)*(i-2)/2;++x)t=(t+1ll*g[i-1][x]*h[i-1][x-d-1]%md)%md;
			f[i]=(f[i]+1ll*c*t%md)%md;
		}
	}
	cout<<f[n]<<'\n';
}