#include<iostream>
#include<cstdio>
using namespace std;
#define int long long
int a[1001][1001],ans[1001][1001],c[1001][1001],n,k;
const int mod=1e9+7;
void wlj1()
{
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
c[i][j]=0;
for(int k=1;k<=n;++k)
{
c[i][j]+=(a[i][k]*a[k][j])%mod;
}
}
}
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
a[i][j]=c[i][j]%mod;
}
return;
}
void wlj2()
{
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
c[i][j]=0;
for(int k=1;k<=n;++k)
{
c[i][j]+=(ans[i][k]*ans[k][j])%mod;
}
}
}
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
ans[i][j]=c[i][j]%mod;
}
}
return;
}
signed main()
{
cin>>n>>k;
for(int i=1;i<=n;++i)
{
ans[i][i]=1;
for(int j=1;j<=n;++j)
cin>>a[i][j];
}
while(k)
{
if(k&1)
wlj2();
wlj1();
k/=2;
}
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
cout<<ans[i][j]<<" ";
}
puts(" ");
}
return 0;
}