#define rep(i, n) for (int i = 0; i < (int)(n); i++) #define ALL(v) v.begin(), v.end() typedef long long ll; #include using namespace std; ll MOD; //m次正方行列の積 vector> matrixmul(ll m,vector> a,vector> b){ vector> c(m,vector(m,0)); rep(i,m){ rep(j,m){ rep(k,m) c[i][j]=(c[i][j]+a[i][k]*b[k][j]%MOD)%MOD; } } return c; } //m次正方行列vecのn乗 vector> matrixpow(ll m,vector> vec,ll n){ vector> ans(m,vector(m,0)); rep(i,m) ans[i][i]=1; while(n){ if(n&1) ans=matrixmul(m,ans,vec); vec=matrixmul(m,vec,vec); n>>=1; } return ans; } int main(){ ll n; cin>>n>>MOD; vector> A(2,vector(2)); A[0][0]=1,A[0][1]=1,A[1][0]=1; cout<