#include int main(void){ long long int n, m; scanf("%lld%lld", &n, &m); long long int i; n -= 3; long long int k = 1; long long int a[2][2] = {1, 1, 1, 0}; long long int f[2][2] = {1, 1, 1, 0}; long long int f_n[2][2], a_n[2][2]; for(i = 0; i < 25; i++){ if((k << i) & n){ a_n[0][0] = a[0][0] * f[0][0] + a[0][1] * f[1][0]; a_n[0][1] = a[0][0] * f[0][1] + a[0][1] * f[1][1]; a_n[1][0] = a[1][0] * f[0][0] + a[1][1] * f[1][0]; a_n[1][1] = a[1][0] * f[0][1] + a[1][1] * f[1][1]; a[0][0] = a_n[0][0] % m; a[1][0] = a_n[1][0] % m; a[0][1] = a_n[0][1] % m; a[1][1] = a_n[1][1] % m; } //fγ‚’2乗する f_n[0][0] = f[0][0] * f[0][0] + f[0][1] * f[1][0]; f_n[0][1] = f[0][0] * f[0][1] + f[0][1] * f[1][1]; f_n[1][0] = f[1][0] * f[0][0] + f[1][1] * f[1][0]; f_n[1][1] = f[1][0] * f[0][1] + f[1][1] * f[1][1]; for(int ii = 0; ii < 2; ii++){ for(int jj = 0; jj < 2; jj++){ f[ii][jj] = f_n[ii][jj] % m; } } } printf("%lld\n", a[0][0]); return 0; }