#include #include #include using namespace std; typedef valarray<__int128_t>V; //lol int _N,MOD=1000000007; V z; V &M(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; } int main(){ int N,i; long long K; scanf("%d%lld",&N,&K); vectorA(N); for(i=0;i50){ for(s=accum;i>=1){ if(K&1)e=M(e,x); x=M(x,x); } f=0,s=accum*x[0]; for(i=1;i<=N;i++)f=(f+e[_N+i]*A[N-i])%MOD,s=(s+e[i]*A[N-i])%MOD; } printf("%lld %lld\n",f,s); }