#include <cstdint>
#include <functional>
#include <iostream>
#include <vector>


using ll = int64_t;

const ll p = 1e9+7;
template<class T>
T input(){
    T t;
    std::cin>>t;
    return t;
}
ll n=input<ll>(),k=input<ll>();
void fnn(std::function<void(ll,ll)> func,std::function<void()> f = [](){}){
    for(ll i=1;i<=n;i++){
        for(ll j=1;j<=n;j++){
            func(i,j);
        }
        f();
    }
}
struct Mat{
    std::vector<std::vector<ll>> vec;
    Mat():vec(n+1,std::vector<ll>(n+1,0)){

    }
    Mat&setid(){
        for(ll i=1;i<=n;i++){
            vec[i][i]=1;
        }
        return *this;
    }
    Mat operator*(Mat&that){
        Mat res;
        for(ll i=1;i<=n;i++){
            for(ll j=1;j<=n;j++){
                for(ll k=1;k<=n;k++){
                    res.vec[i][j] = (res.vec[i][j] + vec[i][k]*that.vec[k][j]%p)%p;
                }
            }
        }
        return res;
    }
};


Mat a;
Mat mfp(){
    Mat res;
    res.setid();
    while(k){
        if(k&1)res=res*a;
        a=a*a;
        k/=2;
    }
    return res;
}

int main(){
    fnn([&](ll i,ll j){
        std::cin>>a.vec[i][j];
    });
    const Mat res = mfp();
    fnn([&](ll i,ll j){
        std::cout<<res.vec[i][j]<<' ';
    },[](){
        std::cout<<'\n';
    });
}