#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const ll mod = 1000000007;
inline long long read()
{
long long x = 0, f = 1;
char ch = getchar();
while(ch > '9' || ch < '0')
{
if(ch == '-')
f = -1;
ch = getchar();
}
while(ch >= '0' && ch <= '9')
{
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
ll n, k, a[1001][1001], b[1001][1001];
void mul()
{
ll c[1001][1001];
memset(c,0,sizeof(c));
for(ll i = 1; i <= n; ++i)
for(ll j = 1; j <= n; ++j)
for(ll k = 1; k <= n; ++k)
c[i][j] = (c[i][j]+(a[i][k]*b[k][j])%mod)%mod;
memcpy(a,c,sizeof(c));
}
void mulself()
{
ll c[1001][1001];
memset(c,0,sizeof(c));
for(ll i = 1; i <= n; ++i)
for(ll j = 1; j <= n; ++j)
for(ll k = 1; k <= n; ++k)
c[i][j] = (c[i][j]+(a[i][k]*a[k][j])%mod)%mod;
memcpy(a,c,sizeof(c));
}
int main()
{
n = read();
k = read();
for(ll i =1; i <= n; ++i)
for(ll j = 1; j <= n; ++j)
a[i][j] = read();
memcpy(b,a,sizeof(a));
for(;k!=1; k >>= 1)
{
if(k&1)
mul();
mulself();
}
for(ll i =1; i <= n; ++i)
{
for(ll j = 1; j <= n; ++j)
cout << a[i][j] << ' ';
cout << endl ;
}
return 0;
}