#include <bits/stdc++.h>
using namespace std;
long long n, k;
struct node
{
long long x[105][105];
};
long long int read()
{
int f = 1, sum=0;
char ch;
ch = getchar();
while (ch < '0' || ch > '9')
{
if (ch == '-') f = -1;
ch = getchar();
}
while (ch >= '0' && ch <='9')
{
sum = sum * 10 + (ch - '0');
ch = getchar();
}
return sum * f;
}
node operator * (node &aa, node &bb)
{
node zz;
for (int z = 1;z <= n;z++)
{
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= n;j++)
{
zz.x[i][j] = (zz.x[i][j] + aa.x [i][z] * bb.x [z][j] % 1000000007) % 1000000007;
}
}
}
return zz;
}
int main()
{
n = read();
k = read();
node ans;
node a;
for (int i = 1;i <= n;i++)
{
ans.x[i][i] = 1;
}
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= n;j++)
{
a.x[i][j] = read();
}
}
do{
if(k&1)ans=ans*a;
a=a*a;k>>=1;
}while(k);
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= n;j++)
{
cout << ans.x[i][j] << " ";
}
cout << endl;
}
return 0;
}