#include <iostream>
#include <algorithm>
using namespace std;

double grow[100][100];
double dp[100][100];

int main(void){
	int n,m;
	while( cin >> n >> m,n|m){
		for(int y=0;y<n;y++)
			for(int x=0;x<m;x++)
				dp[x][y]=0;
		for(int y=0;y<n;y++)
			for(int x=0;x<n;x++)
				cin >> grow[x][y];
		for(int i=0;i<n;i++)
			dp[0][i]=1.0;
		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]*grow[k][j]);
		double MAX=0;
		for(int i=0;i<n;i++)
			MAX=max(MAX,dp[m-1][i]);
		cout.precision(2);
		cout << fixed <<MAX << endl;
	}
	return 0;
}