#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,M;
ll f[500][500];
ll mi[1000];
ll c[500][500];
void init()
{
    mi[0]=1;
    for(ll i=1;i<=500;i++)
        mi[i]=mi[i-1]*2%M;
    for(ll i=0;i<500;i++)
    {
        for(ll j=0;j<=i;j++)
        {
            if(!j)
                c[i][j]=1;
            else
                c[i][j]=(c[i-1][j]+c[i-1][j-1])%M;
        }
    }
}
int main()
{
    cin>>n>>M;
    init();
    f[0][0]=1;
    for(ll i=1;i<=n;i++)
    {
        for(ll cnt=1;cnt<i;cnt++)
        {
            for(ll x=1;x<cnt;x++)
            {
                f[i][cnt]=(f[i][cnt]+f[i-x-1][cnt-x]*mi[x-1]%M*c[cnt][x]%M)%M;
            }
        }
        f[i][i]=mi[i-1];
    }
    ll ans=0;
    for(ll i=0;i<=n;i++)
    {
        ans=(ans+f[n][i])%M;
    }
    cout<<ans;
    return 0;
}
