#include<bits/stdc++.h>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,a,n) for(int i=n;i>=a;i--)
#define pb push_back
#define mp make_pair
#define FI first
#define SE second
#define maxn 5000
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef double db;

int mod;
int dp[2][maxn+5];

void add(int &x,int y) {x=x+y>=mod?x+y-mod:x+y;}

int main()
{
	int n; scanf("%d%d",&n,&mod);
	int m=(n-1)/2;

	dp[0][0]=1;
	rep(i,1,m) rep(j,0,n) 
	{
		int &x=dp[i&1][j]; x=0;
		for(int k=0;k*i<=j;k++)
		{
			add(x,1ll*dp[(i-1)&1][j-k*i]*(k+1)%mod);
		}
	}
	int ans=0;
	if(n&1)
	{
		rep(j,0,n-1) for(int k=0;k*(m+1)<=j;k++) add(ans,dp[m&1][j-k*(m+1)]);
	}
	else
	{
		rep(j,0,n-1) for(int k=0;k*(m+1)<=j;k++) add(ans,1ll*dp[m&1][j-k*(m+1)]*(k+1)%mod);
	}
	printf("%d\n",ans);
	return 0;
}