#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int p=1e9+7;
int n;
ll k;
struct qua
{
ll a[110][110];
qua operator = (qua x)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
a[i][j]=x.a[i][j];
}
}
}
}q,a1;
qua operator * (qua x,qua y)
{
qua re;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
ll sum=0;
for(int t=1;t<=n;t++)
{
sum+=x.a[i][t]*y.a[t][j];
sum%=p;
}
re.a[i][j]=sum;
}
}
return re;
}
qua quick_pow(qua x,ll y)
{
qua ta=a1;//ta=1;
while(y)
{
if(y&1) ta=ta*x;
y>>=1;
x=x*x;
}
return ta;
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
a1.a[i][j]=0;
}
}
for(int i=1;i<=n;i++)
{
a1.a[i][i]=1;
}
if(k==0)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
printf("%d ",a1.a[i][j]);
}
printf("\n");
}
return 0;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&q.a[i][j]);
q=quick_pow(q,k);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
printf("%d ",q.a[i][j]);
}
printf("\n");
}
return 0;
}