// P3390 【模板】矩阵快速幂
#include <bits/stdc++.h>
#define int long long int
using namespace std;
const int MAXn = 100 + 9;
const int mod = 1e9 + 7;
struct matrix {
int n, m;
int d[MAXn][MAXn];
matrix() {
memset(d, 0, sizeof(d));
}
};
matrix mul(matrix a, matrix b) {
// a.m == b.n
matrix c;
c.n = a.n; c.m = b.m;
int com = a.m;
for(int i = 1; i <= c.n; i ++)
for(int j = 1; j <= c.m; j ++) {
for(int k = 1; k <= com; k ++) {
(c.d[i][j] += a.d[i][k] * b.d[k][j] % mod) %= mod;
}
}
return c;
}
matrix mpow(matrix a, int p) {
// a.n == a.m
matrix e;
e.n = e.m = a.n;
for(int i = 1; i <= a.n; i ++)
e.d[i][i] = 1;
while(p) {
if(p & 1) e = mul(e, a);
a = mul(a, a);
p >>= 1;
}
return e;
}
signed main() {
matrix a;
int n, p;
scanf("%lld%lld", &n, &p);
a.m = a.n = n;
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= n; j ++)
scanf("%lld", &a.d[i][j]);
matrix b = mpow(a, p);
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <= n; j ++)
printf("%lld ", b.d[i][j]);
printf("\n");
}
return 0;
}