#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef vector > dim2veclo; typedef vector > dim2vecin; typedef vector > dim2vecdo; typedef vector > dim2vecll; typedef vector vecin; typedef vector veclo; typedef vector vecdo; typedef vector vecll; typedef vector vecbo; typedef vector > dim2vecbo; typedef long long ll; typedef vector < pair > vecpa; typedef vector vecst; typedef pair pail; typedef pair pain; typedef vector dim2vecpa; #define rep(i, n) for (int i = 0; i < (int)(n); i++) int dx[4] = { -1, 0, 1, 0 }; int dy[4] = { 0, 1, 0, -1 }; int main() { ll n, m; cin >> n >> m; if (n == 1) { cout << 0 % m << endl; return 0; } if (n == 2) { cout << 1 % m << endl; return 0; } if (n == 3) { cout << 1 % m << endl; return 0; } dim2vecll zen = dim2vecll(2, vecll(2)); zen[0][0] = 1; zen[0][1] = 1; zen[1][0] = 1; zen[1][1] = 0; rep(i, n - 3) { dim2vecll neew = dim2vecll(2, vecll(2)); neew[0][0] = zen[0][0] + zen[1][0]; neew[0][1] = zen[0][1] + zen[1][1]; neew[1][0] = zen[0][0]; neew[1][1] = zen[0][1]; neew[0][0] = neew[0][0] % m; neew[0][1] = neew[0][1] % m; neew[1][0] = neew[1][0] % m; neew[1][1] = neew[1][1] % m; zen = neew; } cout << zen[0][0] << endl; return 0; }