#include<bits/stdc++.h>
#define ll long long
#define ld long double
using namespace std;
ll n,k;
const long long mod=1e9+7;
struct Matrix
{
ll n,m,a[505][505];
Matrix Input()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
}
Matrix Input(ll x)
{
n=x,m=x;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
}
Matrix Input(ll x,ll y)
{
n=x,m=y;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
}
Matrix Output()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<a[i][j]<<' ';
}
cout<<endl;
}
}
Matrix operator+(const Matrix &b)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
a[i][j]+=b.a[i][j];
}
}
}
Matrix operator-(const Matrix &b)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
a[i][j]-=b.a[i][j];
}
}
}
Matrix operator*(const Matrix &b)
{
Matrix c;
c.n=n;
c.m=b.m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=b.m;j++)
{
for(int k=1;k<=m;k++)
{
c.a[i][j]+=a[i][k]*b.a[k][j];
c.a[i][j]%=mod;
}
}
}
}
} a;
Matrix ksm(Matrix x,ll y)
{
Matrix ans=x;
y--;
while(y)
{
if(y&1)
{
ans=ans*x;
}
x=x*x;
y>>=1;
}
return ans;
}
int main()
{
cin>>n>>k;
a.Input(n);
a=ksm(a,k);
a.Output();
}