#include <stdio.h>
#define P 1000000007
void jz_xc(int n , long long [][n] , long long [][n]);
int main (){
int n , m;
scanf("%d%d" , &n , &m);
long long jz[n][n];
int i , j;
for(i = 0;i < n;i ++){
for(j = 0;j < n;j ++){
scanf("%lld" , &jz[i][j]);
}
}
long long ans[n][n];
for(i = 0;i < n;i ++){
for(j = 0;j < n;j ++){
if(i == j){
ans[i][j] = 1LL;
}else{
ans[i][j] = 0LL;
}
}
}
while(m){
if(m & 1){
jz_xc(n , ans , jz);
}
m /= 2;
jz_xc(n , jz , jz);
}
for(i = 0;i < n;i ++){
for(j = 0;j < n;j ++){
printf("%lld " , ans[i][j]);
}
putchar('\n');
}
return 0;
}
void jz_xc(int n , long long jz1[][n] , long long jz2[][n]){
long long jz3[n][n];
int i , j , k;
for(i = 0;i < n;i ++){
for(j = 0;j < n;j ++){
jz3[i][j] = 0LL;
}
}
for(i = 0;i < n;i ++){
for(j = 0;j < n;j ++){
for(k = 0;k < n;k ++){
jz3[i][j] += ((jz1[i][k] % P) * (jz2[k][j] % P)) % P;
}
}
}
for(i = 0;i < n;i ++){
for(j = 0;j < n;j ++){
jz1[i][j] = jz3[i][j];
}
}
}