#include <iostream>
using namespace std;
const int maxn=10;
struct matrix{
    int digit[maxn][maxn];
    int col;
    int row;
    matrix(int a,int b){
        row=a;
        col=b;
        for(int i=0;i<row;i++){
            for(int j=0;j<col;j++){
                digit[i][j]=0;
            }
        }
    }
};
void inputmatrix(matrix& x){
    for(int i=0;i<x.row;i++){
        for(int j=0;j<x.col;j++){
            cin>>x.digit[i][j];
        }
    }
}
matrix mulmatrix(matrix a,matrix b){
    matrix c(a.row,b.col);
    for(int i=0;i<a.row;i++){
        for(int j=0;j<b.col;j++){
            for(int k=0;k<a.col;k++){
                c.digit[i][j]+=a.digit[i][k]*b.digit[k][j];
            }

        }
    }
    return c;
}
matrix produceEye(int n){
    matrix x(n,n);
    for(int i=0;i<x.row;i++){
        x.digit[i][i]=1;
    }
    return x;

}
void outpmatrix(matrix a){
    for(int i=0;i<a.row;i++){
        for(int j=0;j<a.col;j++){
            cout<<a.digit[i][j]<<" ";
        }
        cout<<endl;
    }
}
int main() {
    int n,k;
    while (cin>>n>>k) {
        matrix a(n,n);
        inputmatrix(a);
        matrix x=produceEye(n);
        while(k>0){
            if(k%2==1){
                x=mulmatrix(x, a);
            }
            k/=2;
            a=mulmatrix(a, a);
        }
        outpmatrix(x);
    }
}