#include using namespace std; long long MOD; vector> matdot(vector>& A, vector>& B){ int n = A.size(), m = B.size(), l = B[0].size(); vector> ret(n, vector(l,0)); for(int i=0; i>& dp, vector>& mat, long long k){ while(k){ if(k & 1) dp = matdot(mat, dp); mat = matdot(mat, mat); k >>= 1; } } int main(){ long long N; cin >> N >> MOD; vector> dp(2,vector(1)), mat(2,vector(2,0)); mat[0][0] = mat[0][1] = mat[1][0] = 1; dp[0][0] = 1; dp[1][0] = 0; matpow(dp, mat, N-2); cout << dp[0][0] << endl; }