#include <bits/stdc++.h>
#define ll long long
using namespace std;
long long  n,k;
long long out=0;
int mod=1e9+7;
struct macierz {
	int t[51][51];
};
macierz mac()
{
	macierz a;
		for(int i=0;50>=i;i++)
			for(int j=0;50>=j;j++)
				a.t[i][j]=0;
	return a;
}
macierz mno ( macierz a , macierz b)
{
	macierz c=mac();
	for(int i=0;n>i;i++)
		for(int k=0;n>k;k++)
			for(int j=0;n>j;j++)
				c.t[i][j]=(c.t[i][j]+1LL*a.t[i][k]*b.t[k][j])%mod;
	return c;
}
macierz pot ( macierz a , long long d )
{
	macierz wynik=a;
	d--;
	while(d)
	{
		if(d%2==1)
			wynik=mno(wynik,a);
		a=mno(a,a);
		d/=2;
	}
	return wynik;
}
int main(){
	cin>>n>>k;
	macierz xd = mac();
	for(int i=0;n>i;i++)
		for(int j=0;n>j;j++)
			cin>>xd.t[i][j];
	xd=pot(xd,k);
	for(int i=0;n>i;i++)
		for(int j=0;n>j;j++)
			out+=xd.t[i][j];
	cout<<out%mod;
	return 0;
}
