#include <bits/stdc++.h>
using namespace std;

typedef long long LL;

const int maxn = 51;

LL f[maxn][2][maxn * maxn];

int n, mod;

void solve() {
    scanf("%d%d", &n, &mod);
    int M = n * (n - 1) / 2;

    memset(f, 0, sizeof f);
    f[0][0][M] = 1 % mod;
    for (int i = 0; i < n; i++) {
        for (int r = 0; r <= M + M; r++) {
            if (f[i][0][r]) {
                for (int k1 = 0; k1 < n - i; k1++)
                    for (int k2 = k1; k2 < n - i; k2++) {
                        if (k1 == k2)
                            (f[i + 1][0][r] += f[i][0][r]) %= mod;
                        else
                            (f[i + 1][1][r + k1 - k2] += f[i][0][r]) %= mod;
                    }
            }

            if (f[i][1][r]) {
                for (int k1 = 0; k1 < n - i; k1++)
                    for (int k2 = 0; k2 < n - i; k2++)
                        (f[i + 1][1][r + k1 - k2] += f[i][1][r]) %= mod;
            }
        }
    }
    // for (int r = M; r <= 2 * M; r++) {
    //     cout << f[n][1][r] << " ";
    // }
    // cout << endl;

    LL res = 0;
    for (int r = M + 1; r <= M + n * (n - 1) / 2; r++) {
        (res += f[n][1][r]) %= mod;
    }
    printf("%lld\n", res);
}
int main() {
    int _ = 1;
    while (_--) {
        solve();
    }
    return 0;
}
