#include<bits/stdc++.h>
using namespace std;
#define ll long long 
#define mod 1000000007
ll n;
void add(ll& a, ll b)
{
	a=((a%mod)+(b%mod))%mod;
}
ll mul(ll a, ll b)
{
	return ((a%mod)*(b%mod))%mod;
}
struct M{
	vector<vector<ll>> t;
	M(){
		t.resize(n,vector<ll>(n));
	}
	M operator*(M& b){
		M c=M();
		for(ll i=0;i<n;i++)
		{
			for(ll j=0;j<n;j++)
			{
				for(ll k=0;k<n;k++)
					add(c.t[i][k],mul(t[i][j],b.t[j][k]));
			}
		}
		return c;
	}
};
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	//freopen("test.txt","r",stdin);
	ll k;
	cin>>n>>k;
	vector<vector<ll>> arr(n,vector<ll>(n));
	for(ll i=0;i<n;i++)
	{
		for(ll j=0;j<n;j++)
			cin>>arr[i][j];
	}
	M ans=M();
	for(ll i=0;i<n;i++)
		ans.t[i][i]=1;
	M m=M();
	m.t=arr;
	while(k){
		if(k%2)
			ans=ans*m;
		m=m*m;
		k/=2;
	}
	ll total=0;
	for(ll i=0;i<n;i++)
	{
		for(ll j=0;j<n;j++)
			add(total,ans.t[i][j]);
	}
	cout<<total<<endl;
}