#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 101, MOD = 1e9 + 7;
inline int read()
{
int sign = 1;
char c;
while((c = getchar()) > '9' || c < '0')
{
if(c == '-')
sign = -1;
}
int res = c - '0';
while((c = getchar()) >= '0' && c <= '9')
res = 10 * res + c - '0';
return res * sign;
}
struct matrix
{
int A[N][N];
int n;
void clr(int X)
{
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
A[i][j] = X;
}
matrix operator * (const matrix &X) const
{
matrix tmp = X;
tmp.clr(0);
for(int i = 1; i <= X.n; i++)
{
for(int kk = 1; kk <= X.n; kk++)
{
int pp = A[i][kk];
for(int j = 1; j <= n; j++)
tmp.A[i][j] = (tmp.A[i][j] + pp * X.A[kk][j]) % MOD;
}
}
return tmp;
}
}fir, ans;
signed main()
{
fir.n = read();
ans.n = fir.n;
ans.clr(0);
fir.clr(0);
int k = read();
for(int i = 1; i <= fir.n; i++)
ans.A[i][i] = 1;
for(int i = 1; i <= fir.n; i++)
{
for(int j = 1; j <= fir.n; j++)
fir.A[i][j] = read();
}
while(k > 0)
{
if(k & 1)
ans = ans * fir;
if(k > 1)
ans = ans * ans;
k >>= 1;
}
for(int i = 1; i <= fir.n; i++)
{
for(int j = 1; j <= fir.n; j++)
cout << ans.A[i][j] << " ";
cout << endl;
}
return 0;
}