#include <iostream>

using namespace std;

long long n,mod;
long long cnt[55][2505];
long long cntS[55][2505];
long long per[55];
long long ans[55];

void calcCnt()
{
    cnt[0][0]=1;

    for(int i=1;i<=n;i++)
    {
        for(int inv=0;inv<=i*i;inv++)
            for(int nval=1;nval<=i;nval++)
            {
                if(inv>=i-nval)
                {
                    cnt[i][inv]+=cnt[i-1][inv-(i-nval)];
                    cnt[i][inv]%=mod;
                }
            }

        cntS[i][0]=cnt[i][0];
        for(int inv=1;inv<=i*i;inv++)
            cntS[i][inv]=(cntS[i][inv-1]+cnt[i][inv])%mod;
    }
}

void calcPer()
{
    for(int i=1;i<=n;i++)
        for(int dif=1;dif<i;dif++)
        {
            long long nr=i-dif;
            for(int invP=dif+1;invP<=i*i;invP++)
            {
                long long nans=cnt[i-1][invP]*cntS[i-1][invP-dif-1];
                nans%=mod;
                nans*=nr;
                nans%=mod;

                per[i]+=nans;
                per[i]%=mod;
            }
        }
}
void calcAns()
{
    for(int i=1;i<=n;i++)
    {
        ans[i]=i*ans[i-1]+per[i];
        ans[i]%=mod;
    }
}
int main()
{
    cin>>n>>mod;

    calcCnt();
    calcPer();
    calcAns();

    cout<<ans[n];
    return 0;
}
