#include <bits/stdc++.h>
using namespace std;
int solve(vector<pair<int, int>> &a) {
int st = 0, ans = 0;
for (auto &[l, r] : a) {
if (l < st) {
continue;
}
ans++;
st = r;
}
return ans;
}
int solve_bad(vector<pair<int, int>> a) {
return solve(a);
}
int solve_good(vector<pair<int, int>> a) {
sort(a.begin(), a.end(), [&](pair<int, int> a, pair<int, int> b) { return a.second < b.second; });
return solve(a);
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n, md;
cin >> n >> md;
int64_t ans = 0;
string s = string(n, '*') + string(n, '.');
sort(s.begin(), s.end());
do {
vector<int> a, b;
for (int i = 0; i < 2 * n; ++i) {
if (s[i] == '*') {
a.push_back(i);
} else {
b.push_back(i);
}
}
do {
int good = 1;
vector<pair<int, int>> v;
for (int i = 0; i < n; ++i) {
if (a[i] > b[i]) {
good = 0;
}
v.push_back({a[i], b[i]});
}
if (!good) {
continue;
}
if (solve_bad(v) != solve_good(v)) {
ans++;
}
} while (next_permutation(b.begin(), b.end()));
} while (next_permutation(s.begin(), s.end()));
cout << ans % md << '\n';
}