#include<bits/stdc++.h>
using namespace std;
namespace raw{
inline long long read()
{
long long x=0;int f=1;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f*=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}
return f*x;
}
void write(long long x)
{
if(x/10>0) write(x/10);
putchar(x%10+48);
return;
}
}
using namespace raw;
long long fact(long long n)
{
if(n<=1)
return 1;
return n*fact(n-1);
}
long long C(long long n,long long m)
{
long long sum=0;
sum=fact(n)/(fact(m)*fact(n-m));
if(m>n)sum=0;
return sum;
}
long long fact2(long long n,long long p){
if(n==1)return 1;
return C(n,n/2)*(fact2(n/2)*fact2(n/2))%p;
}
int main()
{
long long n=read(),p=read();
cout<<fact2(n,p);
return 0;
}