#include<bits/stdc++.h>
using namespace std;
long long ans[105][105];
long long c[105][105];
long long a[105][105];
int n;
int k1;
void em(){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
c[i][j]=0;
}
}
}
void func1(){
em();
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
c[i][j]=(c[i][j]%1000000007+ans[i][k]*a[k][j]%1000000007)%1000000007;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
ans[i][j]=c[i][j]%1000000007;
}
}
}
void func2(){
em();
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
c[i][j]=(c[i][j]%1000000007+a[i][k]*a[k][j]%1000000007)%1000000007;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]=c[i][j]%1000000007;
}
}
}
int main(){
cin>>n>>k1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%lld",&a[i][j]);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
ans[i][j]=0;
}
}
for(int i=1;i<=n;i++){
ans[i][i]=1;
}
while(k1!=0){
if(k1%2==1) func1();
func2();
k1/=2;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%lld ",ans[i][j]%1000000007);
}
printf("\n");
}
return 0;
}