#include using namespace std; using ll=long long; using pll=pair; using tll=tuple; const ll INF=(1ll<<60); #define rep(i,n) for (ll i=0;i<(ll)(n);i++) #define all(v) v.begin(),v.end() template void chmin(T &a,T b){ if(a>b){ a=b; } } template void chmax(T &a,T b){ if(a> matrix_mul(vector> a,vector> b,ll mod){ vector> ret((ll)a.size(),vector((ll)b[0].size(),0)); rep(i,a.size()){ rep(j,b[0].size()){ rep(k,b.size()){ ret[i][j]+=a[i][k]*b[k][j]%mod; ret[i][j]%=mod; } } } return ret; } vector> matrix_pow(vector> &a,ll x,ll mod){ vector> p=a,ret((ll)a.size(),vector((ll)a[0].size(),0)); rep(i,a.size()) ret[i][i]=1; for(ll i=0;i<=62;i++){ if(x&(1ll<> n >> m; vector> a={{1,1},{1,0}}; vector> b={{1},{0}}; cout << matrix_mul(matrix_pow(a,n-1,m),b,m)[1][0] << '\n'; }