#include<bits/stdc++.h>
using namespace std;
int dp[510][127010],mod,c[510][510],s[127010],jc[510];
int sol(int n){
	s[0]=dp[n-1][0];
	for(int i=1;i<=n*(n-1)/2;i++)s[i]=(s[i-1]+dp[n-1][i])%mod;
	int ans=0;
	for(int i=1;i<n;i++)for(int j=i+1;j<=n*(n-1)/2;j++)(ans+=1ll*(n-i)*dp[n-1][j]%mod*s[j-(i+1)]%mod)%=mod;
	return ans;
}
int main(){
	int n;
	scanf("%d%d",&n,&mod);
	jc[0]=1;
	for(int i=1;i<=n;i++)jc[i]=1ll*jc[i-1]*i%mod;
	c[0][0]=dp[1][0]=1;
	for(int i=2;i<=n;i++)for(int j=0;j<=i*(i+1)/2;j++){
		if(!j)dp[i][j]=1;
		else dp[i][j]=(dp[i][j-1]+(dp[i-1][j]-((j>=i)?dp[i-1][j-i]:0))%mod)%mod;
	}
	for(int i=1;i<=n;i++){
		c[i][0]=1;
		for(int j=1;j<=i;j++)c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
	}
	int ans=0;
	for(int i=0;i<n;i++)(ans+=1ll*c[n][i]*jc[i]%mod*sol(n-i)%mod)%=mod;
	return printf("%d",(ans+mod)%mod),0;
}
