#include <iostream>
#include <cstdio>
using namespace std;
struct Matrix{
int matrix[3][3];
int row, col;
Matrix(int r, int c): row(r), col(c){
}
};
//矩阵乘法
Matrix Multiply(Matrix x, Matrix y){
Matrix answer(x.row, y.col);
for(int i = 0; i < answer.row; i++){
for(int j = 0; j < answer.col; j++){
answer.matrix[i][j] = 0;
for(int k = 0; k < x.col; k++){
answer.matrix[i][j] += x.matrix[i][k] * y.matrix[k][j];
}
}
}
return answer;
}
//输出矩阵
void PrintMatrix(Matrix x){
for(int i = 0; i < x.row; i++){
for(int j = 0; j < x.col; j++){
cout << x.matrix[i][j] << " ";
}
cout << endl;
}
}
//矩阵幂
Matrix FastExponentiation(Matrix x, int k){
Matrix answer(x.row, x.col);
for(int i = 0; i < answer.row; i++){
for(int j = 0; j < answer.col; j++){
if(i == j){
answer.matrix[i][j] = 1;
}else{
answer.matrix[i][j] = 0;
}
}
}
while(k != 0){ //k转成二进制
if(k % 2 == 1){
answer = Multiply(answer, x); //累乘x的2^k次幂
}
k /= 2;
x = Multiply(x, x); //x 不断平方
}
return answer;
}
int main(int argc, char** argv) {
int n, k;
while(cin >> n >> k){
Matrix x(n, n);
for(int i = 0; i < x.row; i++){
for(int j = 0; j < x.col; j++){
cin >> x.matrix[i][j];
}
}
Matrix answer = FastExponentiation(x, k);
PrintMatrix(answer);
}
return 0;
}