code:
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+3,mod=1e9+7;
struct Matrix{
int a[N][N];
};
Matrix operator*(const Matrix&a,const Matrix&b){
Matrix c;
memset(c.a,0,sizeof(c.a));
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
for(int k=0;k<N;k++){
c.a[i][k]=(c.a[i][j]+a.a[i][k]*b.a[k][j]%mod)%mod;
}
}
}
}
Matrix POW(Matrix X,int k){
Matrix Ret;
memset(Ret.a,0,sizeof Ret.a);
for(int i=0;i<N;i++)Ret.a[i][i]=1;
while(k){
if(k&1)Ret=Ret*X;
X=X*X;
k>>=1;
}
return Ret;
}
int main(){
Matrix A;
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)cin>>A.a[i][j];
}
Matrix C=POW(A,k);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<C.a[i][j]<<' ';
}
cout<<endl;
}
return 0;
}