#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;   }   