#include #include using namespace std; const long mod=1e9+7; template array,N>pw(array,N>A,long K) { array,N>ret; for(int i=0;i,N>tmp; for(int i=0;i>=1; array,N>tmp; for(int i=0;i>N>>M; array,2>D; D[0][0]=1; D[0][1]=1; D[1][0]=1; D[1][1]=0; D=pw<2>(D,M); array,3>F; F[0][0]=D[0][0]; F[0][1]=D[0][1]; F[1][0]=D[1][0]; F[1][1]=D[1][1]; F[0][2]=F[1][2]=0; F[2][0]=D[0][0]; F[2][1]=D[0][1]; F[2][2]=1; F=pw<3>(F,N); cout<