#include <iostream>
#include <iomanip>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
	for(int n,m;cin>>n>>m,n|m;){
		vector<vector<double> > g(n,vector<double>(n));
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				cin>>g[i][j];
		
		vector<vector<double> > dp(m,vector<double>(n,0));
		dp[0].assign(n,1);
		for(int i=1;i<m;i++){
			for(int j=0;j<n;j++)
				for(int k=0;k<n;k++)
					dp[i][j]=max(dp[i][j],dp[i-1][k]*g[k][j]);
		}
		
		cout<<fixed<<setprecision(2)<<*max_element(dp[m-1].begin(),dp[m-1].end())<<endl;
	}
	return 0;
}