def matrix_multiply(A, B):
if len(A[0]) != len(B):
print('range error')
return
n = len(A)
m = len(A[0])
k = len(B[0])
res = [[] for _ in range(n)]
for i in range(n):
for j in range(k):
ans = 0
for q in range(m):
ele = A[i][q] * B[q][j] % 1000000007
ans = (ans + ele) % 1000000007
res[i].append(ans)
return res
def matrix_fast_pow(A, k):
res = [[0] * len(A) for _ in range(len(A))]
for i in range(len(A)):
res[i][i] = 1
while k:
if k & 1:
res = matrix_multiply(res, A)
k >>= 1
A = matrix_multiply(A, A)
return res
n, k = map(int, input().split())
getm = [[] for _ in range(n)]
for i in range(n):
a = list(map(int, input().split()))
for j in a:
getm[i].append(j)
ans = matrix_fast_pow(getm, k)
for i in range(n):
for j in range(n):
print(ans[i][j], end=' ')
print(' ')