#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100;
struct Matrix {
    int row, col;
    int matrix[MAXN][MAXN];
    Matrix(int x, int y): row(x), col(y) {}
};

Matrix add_matrix(Matrix x, Matrix y) {
    Matrix ansever = Matrix(x.row, x.col);
    for (int i = 0; i < ansever.row; i++) {
        for (int j = 0; j < ansever.col; j++) {
            ansever.matrix[i][j] = x.matrix[i][j] + y.matrix[i][j];
        }
    }
    return ansever;
}

Matrix mutiple(Matrix x, Matrix y) {
    Matrix ansever = Matrix(x.row, y.col);
    for (int i = 0; i < ansever.row; i++) {
        for (int j = 0; j < ansever.col; j++) {
            ansever.matrix[i][j] = 0;
            for (int k = 0; k < x.col; k++) {
                ansever.matrix[i][j] += x.matrix[i][k] * y.matrix[k][j];
            }
        }
    }
    return ansever;
}

Matrix Quickpover(Matrix x, int n) {
    Matrix ansever(x.row, x.col);
    for (int i = 0; i < x.row; i++) { //初始化别忘了,初始化为单位矩阵
        for (int j = 0; j < x.col; j++) {
            if (i == j)ansever.matrix[i][j] = 1;
            else ansever.matrix[i][j] = 0;
        }
    }
    while (n != 0) {
        if (n % 2 == 1) {
            ansever = mutiple(ansever, x);
        }
        n /= 2;
        x = mutiple(x, x);
    }
    return ansever;
}

Matrix Traspose(Matrix x) {
    Matrix ansever(x.row, x.col);
    for (int i = 0; i < x.row; i++) {
        for (int j = 0; j < x.row; j++) {
            ansever.matrix[i][j] = x.matrix[j][i];
        }
    }
    return ansever;
}

void Inputmatrix(Matrix& x) {
    for (int i = 0; i < x.row; i++) {
        for (int j = 0; j < x.col; j++) {
            scanf("%d", &x.matrix[i][j]);
        }
    }
    return;
}
void Outputmatrix(Matrix x) {
    for (int i = 0; i < x.row; i++) {
        for (int j = 0; j < x.col; j++) {
            if (j == 0)printf("%d", x.matrix[i][j]);
            else printf(" %d",
                            x.matrix[i][j]); //每行数之间用空格隔开,注意,每行最后一个数后面不应该有多余的空格。
        }
        cout << endl;
    }
    return;
}

int main() {
    int n, k;
    while (cin >> n >> k) {
        Matrix ansever(n, n);
        Inputmatrix(ansever);
        ansever = Quickpover(ansever, k);
        Outputmatrix(ansever);
    }
    return 0;
}