#include<iostream>
using namespace std;
class matrix {
private:
long long map[101][101]={0};
int len=0;
public:
matrix(int size):len(size){};
long long *operator[](int ask){
return map[ask];
};
matrix operator*(matrix mull){
matrix answer(len);
for(int its=1;its<=len;its++){
for(int fex=1;fex<=len;fex++){
for(int key=1;key<=len;key++){
answer[its][fex]+=(map[its][key])*(mull[key][fex])%1000000007;
answer[its][key]%=1000000007;
};
};
};
return answer;
};
void operator&(int init){
for(int its=1;its<=len;its++){
map[its][its]=init;
};
};
void operator|(int size){
len=size;
};
friend void operator>>(istream& in,matrix& power){
for(int its=1;its<=power.len;its++){
for(int fex=1;fex<=power.len;fex++){
in>>power[its][fex];
};
};
};
friend void operator<<(ostream& out,matrix& power){
for(int its=1;its<=power.len;its++){
for(int fex=1;fex<=power.len;fex++){
out<<power[its][fex]<<" ";
};
out<<endl;
};
};
};
int main(int argc,char **argv){
int num,key;
cin>>num>>key;
matrix power(num),spell(num);
cin>>power;
spell&1;
while(key){
if(key&1){
spell*=power;
};
power*=power;
key>>=1;
};
cout<<spell;
return 0;
};