#include <iostream>
#include <vector>
using namespace std;
const long long mod = 1000000007;
struct matrix {
int all[101][101] = {};
int sizes = 0;
matrix() {
}
matrix(int n) {
this->sizes = n;
}
matrix operator*(matrix other) {
matrix ans;
for (int i = 0; i < ans.sizes; i++) {
for (int j = 0; j < ans.sizes; j++) {
for (int k = 0; k < ans.sizes; k++) {
ans.all[i][j] += all[i][k]%mod * other.all[k][j]%mod;
ans.all[i][j] %= mod;
}
}
}
return ans;
}
};
matrix pow(matrix a, long long k) {
if (k == 0) {
matrix d{a.sizes};
for (int i = 0; i < d.sizes; i++) {
d.all[i][i] = 1;
}
return d;
}
if (k % 2 == 0) {
return pow(a * a, k / 2);
} else {
return pow(a * a, (k - 1) / 2) * a;
}
}
int main() {
int n, k;
cin >> n >> k;
matrix all{n};
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> all.all[i][j];
}
}
matrix a = pow(all, k);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << a.all[i][j] << " ";
}
cout << endl;
}
}