#include <iostream>
using namespace std;
int main() {
int m,n;
cin >> m >> n;
int A[m][m]; //массив для хранения исходной матрицы
int B[m][m]; //массив для хранения степеней исходной матрицы
int C[m][m]; //массив для хранения произведений A на B при возведении в степень
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
{
cin >> A[i][j];
B[i][j]=A[i][j];
}
}
int sum=0;
int result=0;
if(n>0)
{
for(int i=0;i<m;i++)
{
result+=B[i][i]; //нахождение следа исходной матрицы
}
cout << result << " ";
}
for(int q=0;q<n-1;q++)
{
for(int i=0;i<m;i++) //перемножение матриц
{
for(int z=0;z<m;z++)
{
for(int j=0;j<m;j++)
{
sum+=A[i][j]*B[j][z];
}
C[i][z]=sum;
sum=0;
}
}
for(int i=0;i<m;i++) //переприсваивание элементов матрицы
{
for(int j=0;j<m;j++)
{
B[i][j]=C[i][j];
}
}
result=0;
for(int i=0;i<m;i++)
{
result+=B[i][i]; //нахождение следа полученной матрицы
}
cout << result << " ";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmludCBtYWluKCkgewoJaW50IG0sbjsKCWNpbiA+PiBtID4+IG47CglpbnQgQVttXVttXTsgLy/QvNCw0YHRgdC40LIg0LTQu9GPINGF0YDQsNC90LXQvdC40Y8g0LjRgdGF0L7QtNC90L7QuSDQvNCw0YLRgNC40YbRiwoJaW50IEJbbV1bbV07IC8v0LzQsNGB0YHQuNCyINC00LvRjyDRhdGA0LDQvdC10L3QuNGPINGB0YLQtdC/0LXQvdC10Lkg0LjRgdGF0L7QtNC90L7QuSDQvNCw0YLRgNC40YbRiwoJaW50IENbbV1bbV07IC8v0LzQsNGB0YHQuNCyINC00LvRjyDRhdGA0LDQvdC10L3QuNGPINC/0YDQvtC40LfQstC10LTQtdC90LjQuSBBINC90LAgQiDQv9GA0Lgg0LLQvtC30LLQtdC00LXQvdC40Lgg0LIg0YHRgtC10L/QtdC90YwKCWZvcihpbnQgaT0wO2k8bTtpKyspCgl7CgkJZm9yKGludCBqPTA7ajxtO2orKykKCQl7CgkJCWNpbiA+PiBBW2ldW2pdOwoJCQlCW2ldW2pdPUFbaV1bal07CgkJfQoJfQoJaW50IHN1bT0wOwoJaW50IHJlc3VsdD0wOwoJaWYobj4wKQoJewoJCWZvcihpbnQgaT0wO2k8bTtpKyspCgkJewoJCQlyZXN1bHQrPUJbaV1baV07IC8v0L3QsNGF0L7QttC00LXQvdC40LUg0YHQu9C10LTQsCDQuNGB0YXQvtC00L3QvtC5INC80LDRgtGA0LjRhtGLIAoJCX0KCQljb3V0IDw8IHJlc3VsdCA8PCAiICI7Cgl9Cglmb3IoaW50IHE9MDtxPG4tMTtxKyspCgl7CgkJZm9yKGludCBpPTA7aTxtO2krKykgLy/Qv9C10YDQtdC80L3QvtC20LXQvdC40LUg0LzQsNGC0YDQuNGGCiAgICAgICAgewogICAgICAgICAgIGZvcihpbnQgej0wO3o8bTt6KyspCiAgICAgICAgICAgewogICAgICAgICAgIAkJZm9yKGludCBqPTA7ajxtO2orKykKCQkJCXsKCQkJCQlzdW0rPUFbaV1bal0qQltqXVt6XTsKCQkJCX0KCQkJCUNbaV1bel09c3VtOyAKCQkJCXN1bT0wOwoJCQl9CgkJfQoJCWZvcihpbnQgaT0wO2k8bTtpKyspIC8v0L/QtdGA0LXQv9GA0LjRgdCy0LDQuNCy0LDQvdC40LUg0Y3Qu9C10LzQtdC90YLQvtCyINC80LDRgtGA0LjRhtGLCgkJewoJCQlmb3IoaW50IGo9MDtqPG07aisrKQoJCQl7CgkJCQlCW2ldW2pdPUNbaV1bal07CgkJCX0KCQl9CgkJcmVzdWx0PTA7CgkJZm9yKGludCBpPTA7aTxtO2krKykKCQl7CgkJCXJlc3VsdCs9QltpXVtpXTsgLy/QvdCw0YXQvtC20LTQtdC90LjQtSDRgdC70LXQtNCwINC/0L7Qu9GD0YfQtdC90L3QvtC5INC80LDRgtGA0LjRhtGLCgkJfQoJCWNvdXQgPDwgcmVzdWx0IDw8ICIgIjsKCX0KCXJldHVybiAwOwp9