#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, M; cin >> N >> M; using ll = long long; using vll = vector; using vvll = vector; #define rep(i, n) for (int i = 0; i < n; i++) vvll m = {{0, 1}, {1, 1}}; vvll e = {{1, 0}, {0, 1}}; auto mul = [&](vvll a, vvll b) { vvll ret(2, vll(2)); rep(i, 2) rep(j, 2) rep(k, 2) ret[i][j] = (ret[i][j] + a[i][k] * b[k][j] % M) % M; return ret; }; auto POW = [&](auto POW, const vvll &a, ll b) { if (b == 0) { return e; } vvll ret = POW(POW, a, b / 2); ret = mul(ret, ret); if (b & 1) { ret = mul(ret, a); } return ret; }; auto mul2 = [&](vvll a, vll b) { vll ret(2); rep(i, 2) rep(j, 2) ret[i] = (ret[i] + a[i][j] * b[j] % M) % M; return ret; }; cout << mul2(POW(POW, m, N - 2), {0, 1})[1] << '\n'; return 0; }