#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 505
#define M 245000
ll C[N][N],jc[N],ans,now,dp[2][M<<1],c[M<<1];
int n,mod,i,j,tmp,nxt,MX,ee;
int main(){
	cin>>n>>mod;
	for(C[0][0]=i=1;i<=n;++i)
		for(j=C[i][0]=1;j<=i;++j)
			C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;
	for(jc[0]=i=1;i<=n;++i)jc[i]=jc[i-1]*i%mod;
	for(dp[tmp][M]=1,i=1;i<n-1;++i){
		MX=i*(i-1)/2;nxt=tmp^1;
		for(j=M-MX;j<=M+MX;++j){
			c[j-i]+=dp[tmp][j];
			c[j+1]-=dp[tmp][j]<<1;
			if(j<M+MX-1)c[j+i+2]+=dp[tmp][j];
		}
		for(now=ee=0,j=M-MX-i;j<=M+MX+i;++j){
			(c[j]+=c[j-1])%=mod,(now+=c[j])%=mod,dp[nxt][j]=now;
			ee+=dp[nxt][j];
		}
		for(j=M-MX-i;j<=M+MX+i;++j)c[j]=0;
		tmp=nxt;
		for(now=0,j=M+MX+i;j>M;--j){
			if(j<=M+i+1)ans+=C[n][n-i-2]*jc[n-i-2]%mod*(M+i-j+2)%mod*now%mod;
			(now+=dp[tmp][j])%=mod;
		}
	}
	cout<<(ans%mod+mod)%mod;
}