#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int N = 52;
ll mod = 1000000007;
vector<vector<ll>> matrix(N, vector<ll> (N, 0));
void multiply(int dim, vector<vector<ll>> &A, vector<vector<ll>> &B){
vector<vector<ll>> res(N, vector<ll> (N, 0));
for (size_t i = 0; i < dim; i++){
for (size_t j = 0; j < dim; j++){
res[i][j] = 0;
for (size_t k = 0; k < dim; k++){
ll temp = ((A[i][k] * B[k][j]) % mod);
res[i][j] = (res[i][j] + temp)%mod;
}
}
}
for (size_t i = 0; i < dim; i++){
for (size_t j = 0; j < dim; j++){
A[i][j] = res[i][j];
}
}
}
void power(int m, ll n){
vector<vector<ll>> I(N, vector<ll> (N, 0));
for (size_t i = 0; i < m; i++){
for (size_t j = 0; j < m; j++){
I[i][j] = (i == j ? 1 : 0);
}
}
while(n){
if (n&1){
multiply(m, I, matrix);
n -= 1;
}
else{
multiply(m, matrix, matrix);
n /= 2;
}
}
for (size_t i = 0; i < m; i++){
for (size_t j = 0; j < m; j++){
matrix[i][j] = I[i][j];
}
}
}
int main(int argc, char const *argv[]){
ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);
// #ifndef ONLINE_JUDGE
// freopen("inp.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
// #endif
int t;
cin>>t;
ll m, n;
while(t--){
cin>>m>>n;
for (size_t i = 0; i < m; i++){
for (size_t j = 0; j < m; j++){
cin>>matrix[i][j];
}
}
power(m, n);
for (size_t i = 0; i < m; i++){
for (size_t j = 0; j < m; j++){
cout<<matrix[i][j]<<" ";
}
cout<<"\n";
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKaW50IE4gPSA1MjsKbGwgbW9kID0gMTAwMDAwMDAwNzsKdmVjdG9yPHZlY3RvcjxsbD4+IG1hdHJpeChOLCB2ZWN0b3I8bGw+IChOLCAwKSk7CgoKdm9pZCBtdWx0aXBseShpbnQgZGltLCB2ZWN0b3I8dmVjdG9yPGxsPj4gJkEsIHZlY3Rvcjx2ZWN0b3I8bGw+PiAmQil7CiAgICB2ZWN0b3I8dmVjdG9yPGxsPj4gcmVzKE4sIHZlY3RvcjxsbD4gKE4sIDApKTsKCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpbTsgaSsrKXsKICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGRpbTsgaisrKXsKICAgICAgICAgICAgcmVzW2ldW2pdID0gMDsKICAgICAgICAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBkaW07IGsrKyl7CiAgICAgICAgICAgICAgICBsbCB0ZW1wID0gKChBW2ldW2tdICogQltrXVtqXSkgJSBtb2QpOwogICAgICAgICAgICAgICAgcmVzW2ldW2pdID0gKHJlc1tpXVtqXSArIHRlbXApJW1vZDsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICB9ICAgIAogICAgfQoKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGltOyBpKyspewogICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZGltOyBqKyspewogICAgICAgICAgICBBW2ldW2pdID0gcmVzW2ldW2pdOwogICAgICAgIH0gICAgICAgICAKICAgIH0KfQoKdm9pZCBwb3dlcihpbnQgbSwgbGwgbil7ICAgIAogICAgdmVjdG9yPHZlY3RvcjxsbD4+IEkoTiwgdmVjdG9yPGxsPiAoTiwgMCkpOwoKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbTsgaSsrKXsKICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG07IGorKyl7CiAgICAgICAgICAgIElbaV1bal0gPSAoaSA9PSBqID8gMSA6IDApOwogICAgICAgIH0gICAgCiAgICB9CgogICAgd2hpbGUobil7CiAgICAgICAgaWYgKG4mMSl7CiAgICAgICAgICAgIG11bHRpcGx5KG0sIEksIG1hdHJpeCk7CiAgICAgICAgICAgIG4gLT0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgbXVsdGlwbHkobSwgbWF0cml4LCBtYXRyaXgpOwogICAgICAgICAgICBuIC89IDI7CiAgICAgICAgfSAgICAgICAgICAgICAgICAgICAKICAgIH0KCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG07IGkrKyl7CiAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtOyBqKyspewogICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBJW2ldW2pdOwogICAgICAgIH0gICAgICAgICAKICAgIH0KfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgY29uc3QgKmFyZ3ZbXSl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoTlVMTCk7Y291dC50aWUoTlVMTCk7CiAgICAvLyAjaWZuZGVmIE9OTElORV9KVURHRQogICAgLy8gICAgIGZyZW9wZW4oImlucC50eHQiLCAiciIsIHN0ZGluKTsKICAgIC8vICAgICBmcmVvcGVuKCJvdXQudHh0IiwgInciLCBzdGRvdXQpOwogICAgLy8gI2VuZGlmCgogICAgaW50IHQ7CiAgICBjaW4+PnQ7CgogICAgbGwgbSwgbjsKICAgIAogICAgd2hpbGUodC0tKXsKICAgICAgICBjaW4+Pm0+Pm47ICAgICAgICAKCiAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtOyBpKyspewogICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG07IGorKyl7CiAgICAgICAgICAgICAgICBjaW4+Pm1hdHJpeFtpXVtqXTsKICAgICAgICAgICAgfSAgICAKICAgICAgICB9CgogICAgICAgIHBvd2VyKG0sIG4pOwoKICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG07IGkrKyl7CiAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbTsgaisrKXsKICAgICAgICAgICAgICAgIGNvdXQ8PG1hdHJpeFtpXVtqXTw8IiAiOwogICAgICAgICAgICB9ICAgIAogICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgIH0gICAgICAgIAogICAgfQoKICAgIHJldHVybiAwOwp9