#include #include #include using namespace std; typedef valarray<__int128_t>V; //lol int _N,MOD=1000000007; V z; V &Me(const V &_x,const V &_y){ int i=0,j; for(;i<_N;i++)for(j=0;j<_N;j++)z[i*_N+j]=(_x[slice(i*_N,_N,1)]*_y[slice(j,_N,_N)]).sum()%MOD; return z; } V &Mx(const V &_x){ int i=0,j; for(;i<_N;i++)for(j=0;j<_N;j++)z[i*_N+j]=(_x[slice(i*_N,_N,1)]*_x[slice(j,_N,_N)]).sum()%MOD; return z; } int main(){ int N; long long K; scanf("%d%lld",&N,&K); vectorA(N); for(int i=0;i>=1){ if(K&1)e=Me(e,x); x=Mx(x); } long long f=0; for(int i=0;i