#include<bits/stdc++.h> usingnamespace std; #define int long long int n, m, i, j, k; int a[5][5]= { {0,0,0,0,0}, {0,1,1,0,0}, {0,1,0,0,0}, {0,1,0,1,0}, {0,0,0,1,1} }; int ans[5][5], mo; voidcheng(int a[5][5], int b[5][5], int n, int m, int q){ int c[5][5]= {0}, i, j, k; for(i=1; i<=n; ++i) for(j=1; j<=q; ++j) for(k=1; k<=m; ++k) c[i][j]=(c[i][j]+a[i][k]*b[k][j])%mo; memset(a, 0, sizeof(c)); memcpy(a, c, sizeof(c)); } signedmain(){ scanf("%lld%lld", &n, &mo); m=n; ans[1][1]=ans[2][2]=ans[3][3]=ans[4][4]=1; while(n) { if(n&1) cheng(ans, a, 4, 4, 4); n>>=1; cheng(a, a, 4, 4, 4); } memset(a, 0, sizeof(a)); a[1][1]=1; cheng(ans, a, 4, 4, 1); printf("%lld", ((ans[3][1]*m-ans[4][1])%mo+mo)%mo); return0; }