#include #include #include using namespace std; using namespace atcoder; using mint = modint; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000005 #define Inf64 4000000000000000001LL mint dp[1600][3]; bool f[1600][3]; mint get(int x,int k){ if(f[x][k])return dp[x][k]; if(x<0)return 0; f[x][k] = true; if(k==0){ if(x==0)return dp[x][k] = 1; return dp[x][k] = get(x-2,2); } if(k==1){ if(x==0)return dp[x][k] = 1;; mint res = 0; for(int i=1;i<=x;i++){ res += get(i,0) * get(x-i,1); } return dp[x][k] = res; } if(k==2){ if(x==0)return 0; if(x==1)return dp[x][k] = 1; mint res = 0; for(int i=1;i<=x;i++){ res += get(i,0) * get(x-i,2); res += get(i,0) * get(x-i-1,1); } return dp[x][k] = res; } } int main(){ int n,m; cin>>n>>m; mint::set_mod(m); cout<