#pragma GCC optmize(2,3,"Ofast","inline")
#include<bits/stdc++.h>
#define int long long
#define max(a,b) ((a) > (b) ? (a) : (b))
#define min(a,b) ((a) < (b) ? (a) : (b))
#define abs(a) ((a) > 0 ? (a) : 0 - (a))
#define in(a,b,c) ((a) >= (b) && (a) <= (c))
#define isint(a) (floor(a) == a)
#define endl '\n'
using namespace std;
#define N 101
#define mod 1000000007
int n,k;
struct box {
int a[N][N];
void init() {
for(int i = 1; i <= n; i++) {
a[i][i] = 1;
}
}
};
box operator *(box x,box y) {
box c;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
for(int k = 1; k <= n; k++) {
c.a[i][j] = (c.a[i][j] + x.a[i][k] * y.a[k][j] % mod) % mod;
}
}
}
return c;
}
box operator ^(box x,int k) {
box ans;
ans.init();
while(k) {
if(k & 1)ans = ans * x;
x = x * x,k >>= 1;
}
return ans;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> k;
box x;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
cin >> x.a[i][j];
}
}
box y = x ^ k;
for(int i = 1; i <= n; cout << endl,i++) {
for(int j = 1; j <= n; j++) {
cout << y.a[i][j] << " ";
}
}
}