#include<bits/stdc++.h>
using namespace std;
int mod;
long long dp[404][404];
long long C[1005][1005];
int qpow(long long x,int n){
	long long ans=1;
	for(;n;n>>=1,x=x*x%mod)if(n&1)ans=ans*x%mod;
	return ans;
}
int main(){
	int n;
	scanf("%d%d",&n,&mod);
	dp[1][1]=1;
	for(int i=0;i<=2*n;i++){
		for(int j=0;j<=i;j++){
			if(j==0)C[i][j]=1;
			else C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;
		}
	}
	dp[0][0]=1;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=i;j++){
			if(j==i)dp[i][j]=qpow(2,j-1);
			else{
				for(int k=1;k<j;k++){
					dp[i][j]+=dp[i-k-1][j-k]*qpow(2,k-1)%mod*C[j][k];
					dp[i][j]%=mod;
				}
			}
		}
	}
	long long ans=0;
	for(int i=1;i<=n;i++)ans+=dp[n][i];
	printf("%lld\n",ans%mod);
} 