#include #include typedef long long LL; const LL mod=1e9+7; const int maxn=105; int n; LL k; inline void times(LL a[maxn][maxn],LL b[maxn][maxn],LL c[maxn][maxn]) { memset(c,0,sizeof(LL)*maxn*maxn); for(int i=0;i0;k>>=1) { if(k&1) { times(res,a,tmp); memcpy(res,tmp,sizeof(LL)*maxn*maxn); } times(a,a,tmp); memcpy(a,tmp,sizeof(LL)*maxn*maxn); } } LL a[maxn][maxn],res[maxn][maxn],tmp[maxn][maxn]; int main() { #ifdef local freopen("pro.in","r",stdin); #endif scanf("%d%lld",&n,&k); for(int i=0;i