#include using namespace std; using ll = long long int; using ld = long double; const ll MAX = 5000000000000000000; ll MOD = 1000000007; int main(){ ll N,M,i; cin >> N >> M; vector> A = {{1,1},{1,0}}; vector B = {1,0}; N--; while(N > 0){ if(N % 2 == 1){ B = { (((A[0][0] * B[0]) % M) + ((A[0][1] * B[1]) % M)) % M, (((A[1][0] * B[0]) % M) + ((A[1][1] * B[1]) % M)) % M }; } N /= 2; A = {{ (((A[0][0] * A[0][0]) % M) + ((A[0][1] * A[0][1]) % M)) % M, (((A[1][0] * A[0][0]) % M) + ((A[1][1] * A[0][1]) % M)) % M },{ (((A[0][0] * A[1][0]) % M) + ((A[0][1] * A[1][1]) % M)) % M, (((A[1][0] * A[1][0]) % M) + ((A[1][1] * A[1][1]) % M)) % M }}; } cout << B[1] << endl; }