#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
const int MAXN=1e5+5;
long long n,k,mod=1e9+7;
struct node{
long long a[105][105];
node(){
memset(a,0,sizeof(0));
}
}ans,jc;
node operator*(const node &x,const node &y){
node z;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){
z.a[i][j]=(z.a[i][j]+(x.a[i][k]*y.a[k][j])%mod)%mod;
}
}
}
return z;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>jc.a[i][j];
}
}
for(int i=1;i<=n;i++) ans.a[i][i]=1;
while(k){
if(k%2==1){
ans=ans*jc;
}
jc=jc*jc;
k>>=1;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<ans.a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}