#include<bits/stdc++.h>

using namespace std;
long long f[2][500001];
long long s[2][500001];
int main(void){
int n,MOD;
cin >> n >>MOD;
long long res=0;
f[1][250000]=1;
for(int i=250000;i<=500000;i++)
s[1][i]=1;
for(int i=2;i<=n;i++){
    long long temp=0;
    for(int j=1;j<i;j++){
        temp+=(i-j)*(s[(i+1)%2][500000]-s[(i+1)%2][250000+j]);
        temp%=MOD;
    }
    res=res*i+temp;
    res%=MOD;
    for(int j=0;j<250000-n*(n-1)/2;j++)
        s[i%2][j]=0;
    s[i%2][250000-i*(i-1)/2]=f[i%2][250000-i*(i-1)/2]=1;
    for(int j=250000-n*(n-1)/2+1;j<=250000+n*(n-1)/2;j++){
          f[i%2][j]=f[i%2][j-1]-(s[(i+1)%2][j-1]-s[(i+1)%2][j-1-i])+(s[(i+1)%2][j-1+i]-s[(i+1)%2][j-1]);
          f[i%2][j]%=MOD;
          s[i%2][j]=s[i%2][j-1]+f[i%2][j];
          s[i%2][j]%=MOD;

    }
    for(int j=250000+i*(i-1)/2+1;j<=500000;j++){
        s[i%2][j]=s[i%2][250000+n*(n-1)/2];
    }
}

res=(res+MOD)%MOD;
cout << res;
}
