#include<bits/stdc++.h>
const int N = 109,MOD = 1e9 + 7;
using namespace std;
int n;
long long k;
struct matrix{
int A[N][N];
matrix(){
for(int i = 1;i <= n;i++)
A[i][i] = 1;
}
void print(){
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++)
printf("%d ",A[i][j]);
printf("\n");
}
}
} a;
matrix operator *(matrix a,matrix b){
matrix c;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
int tmp = 0;
for(int k = 1;k <= n;k++){
tmp += a.A[i][k] % MOD * b.A[k][j] % MOD;
tmp %= MOD;
}
c.A[i][j] = tmp % MOD;
}
}
return c;
}
matrix quick_pow(matrix x,long long y){
matrix ans;
while(y){
if(y & 1)
ans = ans * x;
x = x * x;
y >>= 1;
}
return ans;
}
int main(){
scanf("%d%lld" ,&n, &k);
for(int i = 1;i <= n;i++)
for(int j = 1;j <= n;j++)
scanf("%d", &a.A[i][j]);
matrix ans;
if(k == 0){
ans.print();
}
else{
ans = quick_pow(a,k);
ans.print();
}
return 0;
}