#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int dp[2][N], n, in;
struct FastMod {
int f, l;
uint64_t m, d;
FastMod(__uint128_t d): d(d) {
l = 64 - __builtin_clzll(d - 1);
const __uint128_t one = 1;
__uint128_t M = ((one << (64 + l)) + (one << l)) / d;
if(M < (one << 64)) f = 1, m = M;
else f = 0, m = M - (one << 64);
}
friend uint64_t operator/(uint64_t n, const FastMod &m) {
if (m.f) return __uint128_t(n) * m.m >> 64 >> m.l;
else {
uint64_t t = __uint128_t(n) * m.m >> 64;
return (((n - t) >> 1) + t) >> (m.l - 1);
}
}
friend uint64_t operator%(uint64_t n, const FastMod &m) {
return n - n / m * m.d;
}
};
int main() {
cin >> n >> in;
FastMod mod(in);
dp[0][0] = 1;
int p = 1, q = 0, ans = 0;
for (int i = 1; i <= n; i++) {
for (int j = i; j < (i << 1); j++) dp[p][j] = dp[q][j - 1];
for (int j = i << 1; j <= n; j++) dp[p][j] = (dp[q][j - 1] + dp[p][j - i]) % mod;
ans = (ans + dp[p][n]) % mod;
p ^= q ^= p ^= q;
}
cout << ans << endl;
return 0;
}