/*
落谷:p3390
给定n*n的矩阵A,求A^k %p
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=110;
const LL mod=1e9+7;
LL n,p;
struct node
{
LL m[N][N];
friend node operator *(node x,node y){
node t;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
t.m[i][j]=0;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){
t.m[i][j]=t.m[i][j]%mod+x.m[i][k]*y.m[k][j]%mod;
}
}
}
return t;
}
}a,e;
node binary(node x,LL y)
{
node ans=e;
while(y){
if(y&1) ans=ans*x;
x=x*x;
y>>=1;
}
return ans;
}
int main()
{
scanf("%lld %lld",&n,&p);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%lld",&a.m[i][j]);
}
}
for(int i=1;i<=n;i++){
e.m[i][i]=1;
}
node t=binary(a,p);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%lld ",t.m[i][j]%mod);
}
printf("\n");
}
return 0;
}