#include using namespace std; #define REP(i, n) for(int i = 0; i < (int)(n); ++i) #define FOR(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i) #define FORR(i, a, b) for(int i = (int)(a); i >= (int)(b); --i) #define ALL(c) (c).begin(), (c).end() using ll = long long; using VI = vector; using VL = vector; using VD = vector; using VII = vector; using VLL = vector; using VDD = vector; using P = pair; using PL = pair; VLL matmul(VLL A, VLL B, int m) { VLL C(A.size(), VL(B[0].size())); REP(i, A.size()) { REP(j, B[0].size()) { REP(k, B.size()) { C[i][j] = (C[i][j] + A[i][k] * B[k][j]) % m; } } } return C; } VLL pow(VLL A, int n, int m) { VLL E(2, VL(2, 0)); E[0][0] = 1; E[1][1] = 1; VLL ans = E; while(n > 0) { if(n % 2 == 1) ans = matmul(A, ans, m); A = matmul(A, A, m); n /= 2; } return ans; } int main() { int n, m; cin >> n >> m; VLL A(2, VL(2)); A[0][0] = 1; A[0][1] = 1; A[1][0] = 1; A[1][1] = 0; A = pow(A, n - 1, m); cout << A[1][0] << endl; }