using i64 = longlong; using u64 = unsignedlonglong; using u32 = unsigned; using u128 = unsigned __int128;
constexprint mod = 1e9 + 7; structMatrix { vector<vector<i64>> a; Matrix() { a.assign(3, vector<i64>(3)); } Matrix operator*(const Matrix b) const { Matrix res; for (int i = 1; i <= 2; i++) { for (int j = 1; j <= 2; j++) { for (int k = 1; k <= 2; k++) { res.a[i][j] = (res.a[i][j] + a[i][k] * b.a[k][j]) % mod; } } } return res; } voidinita(){ a[1][1] = a[1][2] = 1; } voidinitb(){ a[1][1] = a[2][1] = a[1][2] = 1; } };
Matrix qpow(Matrix a, i64 b){ Matrix res; for (int i = 1; i <= 2; i++) { res.a[i][i] = 1; } while (b) { if (b % 2 == 1) { res = res * a; } a = a * a; b /= 2; } return res; }
voidsolve(){ i64 n; cin >> n; if (n <= 2) { cout << 1 << "\n"; return; } Matrix a, b; a.inita(), b.initb(); a = a * qpow(b, n - 2); cout << a.a[1][1] << "\n"; }
signedmain(){ ios::sync_with_stdio(false); cin.tie(0); int t = 1; // cin >> t; while (t--) { solve(); } return0; }
using i64 = longlong; using u64 = unsignedlonglong; using u32 = unsigned; using u128 = unsigned __int128;
i64 mod; i64 p, q, r, t, u, v, w, x, y, z, b, c;
i64 qmul(i64 a, i64 b){ i64 res = 0; while (b) { if (b % 2 == 1) { res = (res + a) % mod; } a = (a + a) % mod; b /= 2; } return res; }
// i64 qmul(i64 a, i64 b) { // unsigned long long c = // (unsigned long long)a * b - // (unsigned long long)((long double)a / mod * b + 0.5L) * mod; // if (c < mod) return c; // return c + mod; // }
Matrix qpow(Matrix a, i64 b){ Matrix res; for (int i = 1; i <= 11; i++) { res.a[i][i] = 1; } while (b) { if (b % 2 == 1) { res = res * a; } a = a * a; b /= 2; } return res; }
voidsolve(){ i64 n; cin >> n >> mod; cin >> p >> q >> r >> t >> u >> v >> w >> x >> y >> z; if (n == 1) { cout << "nodgd 1" << "\n"; cout << "Ciocio 1" << "\n"; cout << "Nicole 1" << "\n"; return; } Matrix a, b; a.inita(); b.initb(); b = qpow(b, n - 2); a = a * b; cout << "nodgd " << a.a[1][1] << "\n"; cout << "Ciocio " << a.a[1][2] << "\n"; cout << "Nicole " << a.a[1][3] << "\n"; }
signedmain(){ ios::sync_with_stdio(false); cin.tie(0); int t = 1; // cin >> t; while (t--) { solve(); } return0; }