#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
const int N = 101;
const int Mod = 1e9 + 7;
struct marix {
long long date[N][N];
int len = 0;
marix operator* (const marix& a) {
marix ans(this->len);
auto arr = this->date;
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
for (int k = 0; k < len; k++) {
ans.date[i][j] += (arr[i][k] * a.date[k][j])%Mod;
}
ans.date[i][j] %= Mod;
}
}
return ans;
}
marix(int a):len(a) {
memset(this->date, 0, sizeof(date));
}
};
int main() {
int n, k;
cin >> n;
cin >> k;
marix arr(n);
marix ans(n);
marix r(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin>>arr.date[i][j];
if (i == j)ans.date[i][j] = 1;
}
}
r = arr;
while (k > 0) {
if (k & 1) {
ans = ans * r;
}
r =r*r;
k >>= 1;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << ans.date[i][j]<<" ";
}
cout << "\n";
}
}