#include <cstdio>
#include <algorithm>
using namespace std;
double tb[100][100], dp[2][100][100];
int main() {
	int n,m;
	while(scanf("%d %d",&n,&m),n) {
		for(int i=0;i<n;i++) for(int j=0;j<n;j++) {
			scanf("%lf",&tb[i][j]);
		}
		fill((double*)dp[1],(double*)dp[2],1);
		for(int i=2;i<=m;i++) for(int j=0;j<n;j++) for(int k=0;k<n;k++) {
			double mv=0;
			for(int l=0;l<n;l++) mv=max(mv,dp[(i-1)%2][k][l]);
			dp[i%2][j][k]=mv*tb[j][k];
		}
		double mv=0;
		for(int i=0;i<n;i++) for(int j=0;j<n;j++) {
			mv=max(mv,dp[m%2][i][j]);
		}
		printf("%.2lf\n",mv);
	}
}