#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>

using namespace std;

/**
 * 矩阵维数
 */
const int DIMENSION = 10;

/**
 * 矩阵
 */
struct Matrix {
    int row;    //矩阵的行
    int col;    //矩阵的列
    int matrix[DIMENSION][DIMENSION];     //二维数组模拟矩阵

    //构造函数
    Matrix(int row, int col) {
        this->row = row;
        this->col = col;
    }
};

/**
 * 矩阵乘法
 * @param x
 * @param y
 * @return
 */
Matrix multiply(Matrix x, Matrix y);

/**
 * 矩阵求幂
 * @param x
 * @return
 */
Matrix quickPower(Matrix x, int n);

/**
 * 打印矩阵
 * @param x
 */
void printMatrix(Matrix x);


/**
 * 矩阵幂--北京邮电大学
 * @return
 */
int main() {
    int n;
    int k;
    while (cin >> n >> k) {
        Matrix x = Matrix(n, n);
        for (int i = 0; i < x.row; ++i) {
            for (int j = 0; j < x.col; ++j) {
                cin >> x.matrix[i][j];
            }
        }
        Matrix ans = quickPower(x, k);
        printMatrix(ans);
    }
    return 0;
}

Matrix multiply(Matrix x, Matrix y) {
    //矩阵乘法结果是x的行和y的列
    Matrix ans(x.row, y.col);
    for (int i = 0; i < ans.row; ++i) {
        for (int j = 0; j < ans.col; ++j) {
            //先初始化为0
            ans.matrix[i][j] = 0;
            /*
             * 根据矩阵相乘的规则
             * matrix[i][j] = x的第i行与y的第j列对应的乘积和
             */
            for (int k = 0; k < x.col; ++k) {
                ans.matrix[i][j] += x.matrix[i][k] * y.matrix[k][j];
            }
        }
    }
    return ans;
}

void printMatrix(Matrix x) {
    //注意题目明确的输出格式
    for (int i = 0; i < x.row; ++i) {
        for (int j = 0; j < x.col; ++j) {
            if (j == 0) {
                //第一列不带空格
                cout << x.matrix[i][j];
            } else {
                //非第一列带前置空格
                cout << " " << x.matrix[i][j];
            }
        }
        cout << endl;
    }
}

Matrix quickPower(Matrix x, int n) {
    Matrix ans = Matrix(x.row, x.col);
    //初始化为单位阵
    for (int i = 0; i < ans.row; ++i) {
        for (int j = 0; j < ans.col; ++j) {
            if (i == j) {
                ans.matrix[i][j] = 1;
            } else {
                ans.matrix[i][j] = 0;
            }
        }
    }

    /*
     * 求快速幂的方法
     */
    while (n != 0) {
        if (n % 2 == 1) {
            ans = multiply(ans, x);
        }
        n = n >> 1;
        x = multiply(x, x);
    }

    return ans;
}