//矩阵快速幂
//满足c[x][y]=∑(i=1,i<=n)a[x][i]*b[i][y],其中c=a*b
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define ll long long
#define MOD 1000000007
using namespace std;
ll n,k;
struct uio{
ll squ[101][101],n,m;
}mat;
uio multiply(uio x,uio y)
{
uio z;//暂存结果
if(x.m!=y.n) return z;
z.n=x.n,z.m=y.m;
for(ll i=1;i<=z.n;i++)
for(ll j=1;j<=z.m;j++)
{
z.squ[i][j]=0;
for(ll l=1;l<=x.m;l++)
z.squ[i][j]=(z.squ[i][j]+x.squ[i][l]*y.squ[l][j])%MOD;
}
return z;
}
uio fast_exponentiation(uio x,ll k)//与普通快速幂结构相同
{
uio ans=x,y=x;
k--;//ans=x表示已经乘过一次了 因此次数减一
while(k>0)
{
if(k%2==1)
ans=multiply(y,ans);
y=multiply(y,y);
k/=2;
}
return ans;
}
int main()
{
scanf("%lld%lld",&n,&k);
for(ll i=1;i<=n;i++)
for(ll j=1;j<=n;j++)
scanf("%lld",&mat.squ[i][j]);
mat.m=mat.n=n;
mat=fast_exponentiation(mat,k);
for(ll i=1;i<=n;i++)
{
for(ll j=1;j<=n;j++)
printf("%lld ",mat.squ[i][j]);
printf("\n");
}
return 0;
}